CODYSHOP
темы и плагины для WordpressЧтобы сайт был удобным для пользователей, владелец может прибегать к различным техническим приемам. Один из них – использование якорных ссылок. Такие ссылки особенно удобны для перемещения по длинной посадочной странице, или, если на сайте выкладываются объемные записи.
В этой статье я постараюсь рассказать, как можно автоматизировать процесс создания якорей (anchor) с использованием jQuery. Хотя пример рассмотрим в контексте использования на сайте под управлением WordPress, все же, при желании можно интегрировать эту фишку на любой сайт.
Принцип работы якорных ссылок довольно прост: определяемся с точками, куда необходимо быстро перемещаться. Пусть это будут заголовки с тегом h2. Присваиваем каждому заголовку свой уникальный id. Создаем меню для перехода к пунктам с использованием jQuery. Вместо того, чтобы всю работу проводить вручную, давайте автоматизируем процесс.
Шаг 1: Создаем поле для вывода якорного меню
Так как меню мы зафиксируем по правому краю браузера, вы можете расположить основу блока нашего меню в любом месте. Но лучше в файл single.php:
<div id="left-menu-result"> <ul class="sllft" style="display: none;"></ul> </div>
В случае, если наш будущий скрипт не обнаружит заголовки, мы не будем показывать блок.
Шаг 2: Добавляем скрипт
Это основа нашей разработки. Принцип такой: скрипт обнаруживает все заголовки с тегом h2. По порядку присваиваем заголовкам id. В созданный в первом шаге блок, дублируем текст заголовков в созданные пункты списка. Каждому пункту якорного меню присваиваем href соответственно id заголовка.
Чтобы избежать ошибки, в третей строке указан родительский блок с классом modal-body, из которого нужно брать заголовки. Замените его в скрипте на тот, который у вас в исходом коде.
/* для плавающего меню */ jQuery(document).ready(function($) { var menu = $('.modal-body h2'); if ( menu.length ) { $('#left-menu-result ul').html(menu.clone()); $('#left-menu-result ul h2').replaceWith(function(index, oldHTML){ return $('<span class="sl_lt">').html(oldHTML); }); $('#left-menu-result span').wrap('<li></li>'); $('#left-menu-result ul li').append('<a rel="nofollow noindex" class="anchor"></a>'); // заголовкам и якорям задаем одинаковые id var i=0; $('.modal-dialog h2').each(function(){ i++; $(this).attr('id', 'b_'+i); }); var a=0; $('#left-menu-result ul li a').each(function(){ a++; $(this).attr('href', '#b_'+a); }); // показываем плавающее меню $('#left-menu-result ul').show(); // при наведении на пункт плавающего меню, показываем содержание заголовка $('#left-menu-result a').hover( function(){$(this).prev('span').show();}, function(){$(this).prev('span').hide();} ); // прокрутка от пункта плавающего меню к заголовку $('a[href^="#"]').click(function(){ var _href = $(this).attr('href'); $('html, body').animate({scrollTop: $(_href).offset().top+'px'}); return false; }); } });
Для работы этого скрипта на вашем сайте должна быть подключена библиотека jQuery.
В результате, у вас будет создан вот такой html:
<div id="left-menu-result"> <ul class="sllft" style=""> <li><span class="sl_lt">Блок 1</span><a rel="nofollow noindex" class="anchor" href="#b_1"></a></li> <li><span class="sl_lt">Блок 2</span><a rel="nofollow noindex" class="anchor" href="#b_2"></a></li> <li><span class="sl_lt">Блок 3</span><a rel="nofollow noindex" class="anchor" href="#b_3"></a></li> <li><span class="sl_lt">Блок 4</span><a rel="nofollow noindex" class="anchor" href="#b_4"></a></li> </ul> </div>
Шаг 3: Оформляем плавающее меню
Теперь красиво оформляем.
#left-menu-result{ z-index:5; position:fixed; height:100%; top:0; right:16px; text-align: center; } #left-menu-result:after { display:inline-block; vertical-align:middle; width:0; height:100%; content:''; } #left-menu-result ul{ display:inline-block; vertical-align:middle; position:relative; list-style:none; margin: 0; padding: 8px; border: 1px solid #fd3768; border-radius: 20px; margin-right: 9px; } #left-menu-result li { position:relative; margin-bottom:10px; } #left-menu-result li:last-child{ margin-bottom: 0; } #left-menu-result a { display:block; width:20px; height:20px; text-indent:-9999px; background:#eeeeee; -webkit-border-radius:50px; -moz-border-radius:50px; border-radius:50px; box-shadow:inset 0 2px 3px rgba(0,0,0,.2); -webkit-box-shadow:inset 0 2px 3px rgba(0,0,0,.2); -moz-box-shadow:inset 0 2px 3px rgba(0,0,0,.2); } #left-menu-result a:hover, #left-menu-result .actv_b{ background:#fd3768; } #left-menu-result span{ font-weight: 600; cursor: pointer; background:#fd3768; position:absolute; right:32px; top:-13px; min-width: 240px; max-width: 310px; line-height: 16px; text-align: left; display:none; padding:8px 15px 8px; color:#fff; font-size:14px; -webkit-border-radius:25px; -moz-border-radius:25px; border-radius:25px; -webkit-box-shadow: 0 2px 17px 0 rgba(127,131,160,0.15); -moz-box-shadow: 0 2px 17px 0 rgba(127,131,160,0.15); box-shadow: 0 2px 17px 0 rgba(127,131,160,0.15); }
Если вы все правильно сделали, у вас должно появляться плавающее меню. Конечно, приведенный выше код – лишь вариант оформления, который можно переделать под свои условия.