Выпадающее меню в WordPress

Россия+7 (495) 960-65-87
Шрифт:
0 5485

1. Введение
2. Шаг 1. Готовим список пунктов меню руками
3. Шаг 2. Стилизуем списки
4. Шаг 3. Оптимизируем под IE при помощи java-script
5. Шаг 4. jQuery-бонус - плавное меню
6. Заключение

1. Введение

В последнее время я не раз сталкивался с тем, что многие интересуются выпадающим меню в WordPress? Когда-то, только начиная изучать web-кодинг, я пытался сделать более или менее нормальное выпадающее меню - и проклял и java-script, и html, и, конечно же, все браузеры.

Но сейчас я снова заинтересовался этим вопросом, и обнаружил, что для создания отличного выпадающего меню достаточно знать:

а) как делать ненумерованные списки в html (

    );
    б) уметь копипастить файл стилей.

    Этот мастер-класс написан для тех, у кого эти два пункта вызывают у сомнения: здесь будет предельно доступно изложено по шагам, как создать выпадающее меню. Нетерпеливые же могут сразу перейти сюда и посмотреть/пощупать своими руками, как это работает.

    2. Шаг 1. Готовим список пунктов меню руками

    Для начала объясню суть создания выпадающего меню из списков, и после этого мы создадим простейший список, который и послужит нам «подопытным кроликом».

    Как известно, выпадающее меню состоит из элементов/ссылок, при наведении на которые мы получаем доступ к дополнительному списку с под-элементами. В обычной ситуации главные пункты меню располагаются в строку, а каждая группа под-элементов представляет собой столбец ссылок, появляющийся после наведения на элемент главного меню.

    Вот мы и будем делать именно списки - внешний для главного меню и внутренние - для каждого набора под-разделов.

    //Внешний список


    Всё просто и, я думаю, дополнительные разъяснения не требуются, главное не забыть указать у внешнего меню class="nav" и id="nav-one".

    3. Шаг 2. Стилизуем списки

    Сам файл стилей не слишком большой, но между тем целиком код я приводить не хочу, поэтому советую для дальнейшей беседы скачать файл стилей, а я буду просто рассказывать про принцип работы, ссылаясь на него.

    Берём файл sfstyle.css и открываем блокнотом или любым другим редактором (если кому интересно, то я использую Zend Development Environment или, проще говоря, ZDE).Ну что же, приступим.

    Первым делом уберём у всевозможных списков все отступы и прочие списочные атрибуты, это делается в .nav, .nav ul. После чего выводим их в строчку, а не как обычно, за это у нас отвечает float:left; в .nav li. Сразу обращу внимание на то, что мы везде применяем относительное (relative) позиционирование (position), чтобы элементы появлялись в строго заданных им местах относительно родительских элементов.

    Теперь нам необходимо спрятать внутренние списки, чтобы они отображались только при наведении. Для реализации этой цели я могу предложить два способа на выбор:

    1) Найденый на A List Apart: для вложенных ul элементов устанавливаем атрибут display:none;, а при наведении (li :hover ul) возвращаем в нормальное значение block.

    2) Попавшийся на одном Ajax-ориентированном сайте - прятать список за экран (top:-999em;), а потом устанавливать позицию при наведении.

    В принципе, на этом можно было бы и закончить, если бы не всеми любимый Internet Explorer (будь он неладен), который плохо обрабатывает псевдокласс :hover, поэтому переходим к следующему шагу.

    4. Шаг 3. Оптимизируем под IE при помощи java-script

    Как это ни прискорбно, но java-script придётся применять в любом случае, но я могу вам предложить два варианта (хотя, на самом деле их, наверное, больше), а вы уж сами решайте, каким воспользоваться.

    Объяснять, как именно это работает, не буду, скажу только, что всё сводится к прицеплению обработчкиков при наведении для всех li внешнего списка.

    Способ 1 - Чистый java-script


    startList = function() {
    if (document.all&&document.getElementById) {
    navRoot = document.getElementById("nav-one");
    for (i=0; inode = navRoot.childNodes[i];
    if (node.nodeName=="LI") {
    node.onmouseover=function() { this.className+=" sfHover";}
    node.onmouseout=function() {
    this.className=this.className.replace(" sfHover", "");
    }
    }}}}
    window.onload=startList;


    Способ 2 - C применением jQuery


    $(document).ready(function(){
    if (document.all) {$("#nav-two li").hoverClass("sfHover");});
    $.fn.hoverClass = function(c) {
    return this.each(function(){
    $(this).hover(
    function() { $(this).addClass(c); },
    function() { $(this).removeClass(c); }
    );
    });
    };


    Кому как, а мне визуально больше нравится второй вариант, к сожалению, тут есть одно "НО" - необходимость подключения библиотеки jQuery. Не скажу, что это огромный минус, потому что: а) она идёт в комплекте с WordPress, так что ничего дополнительно скачивать не придётся; б) возможно, какой-то из установленных у вас плагинов уже ею пользуется. Сама библиотека весит 20-30кб, поэтому особо не обременит пользователя, к тому же, грузится она только первый раз, а потом подгружается из кэша. И не стоит забывать, что она позволяет делать многие интересные вещи, о чём ниже, в Шаге 4.

    Сейчас я объясню, как подключить библиотеку jQuery:
    1. Проверьте, не подключена ли она уже каким-нибудь плагином, для этого откройте любой пост в своём блоге и в html коде поищите слово "jQuery".
    2. Если его нет, то заходим в файл темы header.php и перед < /head> вставляем

    Кстати, уточню, что приведенные выше java-script-листинги нужно тоже вставить в хэдер до < /head> , обрамив с обеих сторон

    5. Шаг 4. jQuery-бонус - плавное меню

    Раз уж мы вынудили пользователя скачать лишних целых 25кб в виде библиотеки jQuery, надо его за это как-то наградить:)Как вы смотрите на то, чтобы сделать появление меню плавным? Думаете, сложно? А как вы оцените такой код? 

    $(document).ready(function(){
    $("#nav-two li ul").fadeOut("fast");
    $("#nav-two li").hover(
    function(){ $("ul", this).fadeIn("fast"); },
    function(){ $("ul", this).fadeOut("fast"); }
    );});

    По-моему, это просто отлично, а главное – понятно. Добавлю лишь, что вместо "fast" можно вставить "slow" или любое число в миллисекундах.

    6. Заключение

    Завершая мастер-класс, я выражаю надежду, что вы, обогатившись новыми знаниями, сможете создавать ещё более удобные для пользователей блоги с красивыми выпадающими меню. Ведь, как оказалось, не так много для этого требуется - зато какой положительный эффект и визуальный, и в плане юзабилити.

    Тем, кто прочёл все вышеизложенное, думаю, стоит посетить эту страничку с примером, где теперь должно быть всё понятно, а если остались какие-то вопросы или я что-то неточно описал - прошу в комменты.

    Андрей Тарашевский aka Тарас - Блог о Wordpress

    Читайте нас в Telegram - digital_bar

    Есть о чем рассказать? Тогда присылайте свои материалы Даше Калинской


    Новые 
    Новые
    Лучшие
    Старые
    Сообщество
    Подписаться 
    Подписаться на дискуссию:
    E-mail:
    ОК
    Вы подписаны на комментарии
    Ошибка. Пожалуйста, попробуйте ещё раз.
    Отправить отзыв
      ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
      32 инструмента в помощь SEO-специалисту
      Игорь
      1
      комментарий
      0
      читателей
      Полный профиль
      Игорь - отличная подборка, сам многим из этих сервисов пользуюсь (ETXT, TEXT.RU, Адаптивность, Pingdom Website Speed Test, Google PageSpeed Tools, 2IP, Whois, Букварикс) Правда не мог найти достойного кластеризатора, но потом наткнулся на вот этот seoquick.com.ua/keyword-grouping/ не сочтите за рекламу:) Было бы интересно услышать ваше мнение о нем. Мне очень даже зашел, из-за скорости работы. Как говорит автор - 100 000 запросов за несколько минут. Я с такими цифрами правда не работал, обычно это до 30 000 точно, но работает очень быстро и в правду. Ну и бесплатно, думаю, это был еще один решающий фактор для меня
      Исследование: влияние smart-ссылок на продвижение по СЧ-запросам
      Анатолий Шевчик
      1
      комментарий
      0
      читателей
      Полный профиль
      Анатолий Шевчик - +1097988
      Не очень удачный кейс продвижения сайта по услуге «Трезвый водитель» в Москве
      Александр Селенков
      1
      комментарий
      0
      читателей
      Полный профиль
      Александр Селенков - Работа проделана огромная. Интересный кейс, все детально и понятно изложено.
      SEO глазами клиентов 2018
      Evgenius Evgenius
      1
      комментарий
      0
      читателей
      Полный профиль
      Evgenius Evgenius - Хороший рейтинг. Постоянно совершенствуется. Предлагаю делить компании ещё и по городам. Хотя бы по основным. Тогда может получиться, что одна компания первая в Спб, вторая в Мск. Третья вторая в обоих городах. А четвёртая на 10 месте в целом по всему рейтингу. Так бы было интереснее для всех.
      Два идеальных способа разориться на старте интернет-магазина
      Стас
      4
      комментария
      0
      читателей
      Полный профиль
      Стас - Seonews в последнее время такую чушь несет! Где вы таких афторов находите? Статья ничего не стоит и несет чушь! Кто хоть немного понимает в этом так вам и скажет, и такие де комментаторы горе-сеошники, просто смешно читать, вы хоть модерируете ваши статьи или просто для воды на сайте?! Бред сивой кобылы эта статья до самой последней точки!!!
      4 способа быстро собрать теги для сайта
      Рустем Низамутинов
      5
      комментариев
      0
      читателей
      Полный профиль
      Рустем Низамутинов - Расписал и закинул в Google Docs, а то здесь в комментариях ссылки на активны. docs.google.com/document/d/1r0TZLNrQyYLdIzDQsD5YKlMG41HUGQgEep3bxE_ij-M/edit?usp=sharing
      Яндекс перестал индексировать сайты, созданные на Wix
      Константин Даткунас
      3
      комментария
      0
      читателей
      Полный профиль
      Константин Даткунас - Было бы интересно посмотреть саму выборку из 10 000 и методику анализа.
      Яндекс: как мы модерируем объявления
      Гость
      5
      комментариев
      0
      читателей
      Полный профиль
      Гость - Это ж Яндекс, чего вы ожидали-то? Коммерческая структура с раздутым штатом, задачей которой является заработать больше денег. Любыми методами. Задача всех пользователей посадить на Директ, даже если придется разрушить суть рунета, реализуется по полной программе. Все возражающие караются и выпиливаются. И каждый из сотрудников делает все возможное и невозможное, чтобы реализовать любую дурацкую идею - за это еще и премию выхватить можно. Даже если потом придется выполнять "откат", премиальные уже заплачены. Так было с одним из фильтров Яндекса, так было с купленным им сайтом Кинопоиска, который из русскоязычной энциклопедии кино был превращен за безумные деньги в банальный платный онлайн-кинотеатр.
      Как мы разработали и вывели в ТОП сайт курсов рисования
      Иван Стороженко
      25
      комментариев
      0
      читателей
      Полный профиль
      Иван Стороженко - Добрый день. 1)Чаще всего основная проблема заключается, в согласовании с клиентом добавляемого контента и то как он будет отображаться. На данном сайте фото и услуги конечно предоставлял клиент, все остальное уже делали мы. 2)Да в принципе, когда есть команда и понимание, что нужно делать, все идет быстро (опять же основная заминка идет на согласовании с клиентом) 3)Смысла делать новый в данном случает нет. В принципе доделывался полноценный сайт. 4)Когда клиент уже не предоставляет информацию, приходится искать у конкурентов (например с других стран или регионов). Но чаще всего клиент, хоть что-то "подкидывает".
      Эксперимент: как уникальность контента влияет на продвижение сайта
      Гоша
      4
      комментария
      0
      читателей
      Полный профиль
      Гоша - Ну да! Тырить легче, чем самому писать... Или хотя бы заказать. Ещё и хвастаемся. Поисковики - не дураки - найдется фильтр и на тех, что воруют чужой контент. Еще немного... еще чуть-чуть. Получается, если ты украл в магазине - ты вор, а если в интернете - ты предприниматель. Успеха!
      ТОП КОММЕНТАТОРОВ
      Комментариев
      910
      Комментариев
      834
      Комментариев
      554
      Комментариев
      540
      Комментариев
      483
      Комментариев
      373
      Комментариев
      329
      Комментариев
      262
      Комментариев
      235
      Комментариев
      171
      Комментариев
      156
      Комментариев
      137
      Комментариев
      121
      Комментариев
      97
      Комментариев
      97
      Комментариев
      95
      Комментариев
      86
      Комментариев
      80
      Комментариев
      67
      Комментариев
      60
      Комментариев
      59
      Комментариев
      57
      Комментариев
      55
      Комментариев
      54
      Комментариев
      53

      Отправьте отзыв!
      Отправьте отзыв!