Совсем недавно, когда создавал сайт под заказ, я столкнулся с маленькой проблемой, которая забрала у меня кучу времени и нервов, чтобы ее решить. Проблема заключалась в том, что заказчик захотел сделать на сайте эффект, чтобы активная ссылка, которая ссылается на текущую страницу в меню, выделялась. Я перелопатил кучу сайтов и форумов, чтобы найти ответ на свой вопрос, и, все-таки, нашел ответ, а что-то пришлось самому додумать. Итак, этот вопрос решается очень быстро и просто и вам не придется искать дополнительную информацию, так как даю полностью готовый скрипт.
Итак присупим.
Как на сайте выделить активную ссылку в меню на WordPress.
Совсем недавно я рассказывал о том, как задать стиль в пункте меню для текущей страницы созданной на WordPress. Хочу повториться, чтобы все, что касается этой темы, находилось в одной статье.
Заметил я, что WordPress автоматически добавляет класс для активной нажатой ссылки. Это можно посмотреть, если открыть исходный код сайта.
В исходном коде можно увидеть, что к активной ссылке был добавлен класс «current-menu-item». А это значит, что мы можем прописать к этому классу любой стиль.
Пример:
Откройте CSS файл шаблона и впишите вот такой код:
#menu li .current-menu-item a { color:#сс0000; }
Внимание: Этот код будет работать в том случае, если ваше меню было взято в блок так, как у меня:
<div id="menu">ваше меню (я вывел меню через виджет)</div>
Вот такой получился у меня результат, когда я использовал класс «current-menu-item».
Теперь я поделюсь информацией, как выделить активную ссылку абсолютно для любого сайта, используя всего лишь маленький код JavaScript и CSS.
Как на сайте выделить активную ссылку в меню, используя JavaScript и CSS.
Хочу предложить готовый код на JavaScript, который автоматически будет прописывать класс « act» к активной ссылке меню, которая ссылается на текущую страницу. Этот код легко встраивается в любой дизайн, шаблон и в любую систему управления сайтом CMS (Joomla, WordPress и др.).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="https://www.w3.org/1999/xhtml"> <head><title></title></head> <body> <style ENGINE="text/css"> body{font: 14px/normal Verdana,sans-serif;} a{text-decoration:none;color:#999;} a:hover{color:#666;} a.act{color:#F00;} </style> <div id="msgText"> <a href="1.html">Ссылка1</a> <a href="2.html">Ссылка2</a> </div> <script type="text/javascript"> try{ var el=document.getElementById('msgText').getElementsByTagName('a'); var url=document.location.href; for(var i=0;i<el.length; i++){ if (url==el[i].href){ el[i].className += ' act'; }; }; }catch(e){} </script> </body> </html>
Обратите внимание на пункт 5 - 10 в коде.
<style type="text/css"> body{font: 14px/normal Verdana,sans-serif;} a{text-decoration:none;color:#999;} a:hover{color:#666;} a.act{color:#F00;} </style>
Здесь вы меняете вид меню, используя знания CSS.
Есть другой способ решение этой проблемы и тоже с использованием JavaScript. Какой способ вам больше нравится, такой и выбирайте.
<html> <head> <script> onload = function () { for (var lnk = document.links, j = 0; j < lnk.length; j++) if (lnk [j].href == document.URL) lnk [j].style.cssText = 'color:black;text-decoration:none; border:1px solid #000'; } </script> </head> <body> <ul class="menu"> <li><a href="1.html">1</a></li> <li><a href="2.html">2</a></li> </ul> </body> </htmL>
Обратите внимание на пункт 8 в коде.
..... style.cssText = ' здесь пропишите правила для активной ссылки, используя знания CSS';
Вот и все. Проблема решена. Если у вас что-то не получилось или вы не поняли, пишите в комментариях, отвечу быстро. Ну, все, до скорых встреч.
Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓
Последние новости категории:
Похожие статьи
Популярные статьи:
-
Как узнать id компьютера
Дата: 29 марта 2013
Прокомментировано:90
просмотров: 329815 -
Размеры форматов листов А0 – А7
Дата: 23 января 2013
Прокомментировано:3
просмотров: 274370 -
Смешные логические загадки с подвохом, отгадки прилагаются
Дата: 12 ноября 2014
Прокомментировано:5
просмотров: 220444 -
Установка windows 7 на ноутбук
Дата: 18 декабря 2012
Прокомментировано:169
просмотров: 186394 -
Готовые макеты блоков для веб-страниц на HTML и CSS
Дата: 25 июня 2014
Прокомментировано:23
просмотров: 181504
41 Ответов на комментарий - Как на сайте выделить активную ссылку в меню, используя JavaScript и CSS
Добавить комментарий
Метки: css, javascript, wordpress, эффекты для сайта
Спасибо, все работает. Давно искал подобный скрипт. Вот только теперь возникает еще одна проблема, как теперь сделать так чтобы не все ссылки брали данное правило, а только некоторые?
Использовал второй пример.
Пожалуйста, Андрей. По поводу вопроса, вам следует указать указать другой стиль, например так
Спасибо тебе, все отлично работает!
Пожалуйста!
Отличный скрипт, подскажите как сделать
например menu.php работает
а если будет menu.php?menu=1 то нет. Как сделать что бы читалось только до ?, спс
Женя, я не понял Ваш вопрос?
Спасибо, просто и работает! То что нужно.
Пожалуйста!
Степан, огромное спасибо за очень полезную статью! Метод работает, но почему-то только для ссылок вида a href=”/gbook/”, а к ссылкам вида a href=”/price.html” свойство стиля не применяется. Подскажи пожалуйста, что нужно подправить в скрипте?
Какой способ Вы выбрали?
Выбрал второй способ. Мне удалось решить проблему, просто нужно было задать стиль не для a.act{color:#F00;}, а для li a.act{color:#F00;}.
Большое спасибо. Очень выручил
Пытался решить проблему разными способами и только твой скрипт сработал на WordPress.
Пожалуйста!
Спасибо за скрипт. Сработал, но можно ли его улучшить? У меня просто на сайте есть основное меню навигации и на некоторых страницах подменю Как сделать так, чтобы при переходе по пунктам подменю., пункт меню тоже оставался выделенным? (Для реализации выбрал второй вариант)
Пожалуйста, Рома!
Напишите ваш код меню (можете его укоротить до макс.).
Для реализации этого, Вам нужно учесть структуру вложенности меню. В WordPress в таблице term_taxonomy указываются родительские категории для каждой подкатегории.
Т.е. нужно при каждом заходе на страницу подкатегории проверять какой категории она принадлежит и формировать меню в соответствии с этими данными.
Приблизительно это должно выглядеть так (на php):
1. Делаем запрос к БД. Находим категорию, которой принадлежит подкатегория.
Записываем ее в переменную $res.
2. Находим в списке категорий ту, что записана в $res и формируем меню.
Т.е. при совпадении категорий меняем стиль тега.
где punkt – это любые Ваши теги. В данном случае у Вас ,
$cat – массив с названиями категориями
3. Выводим меню:
echo $menu;
На JS запрос к БД делаем через aJax и просто меняем стиль у определенного элемента.
Если у Вас не WP, то структуру категорий нужно прописать самостоятельно, например, в “массив массивов”
и потом вместо запроса к БД проверять наличие текущей подкатегории в каждом из “подмассивов”.
А далее, как и описано ранее.
Здравствуйте! У меня шаблон WordPress сайт типа Landing Page, т.е ссылки меню в виде #page. У меня только главная страница выделяется как активная. Подскажите как сделать
Здравствуйте! Дайте ссылку на сайт, посмотрю на ваши стили CSS
Здравствуйте! Могу скинуть нужные файлы. Сайт пока на локальном
Когда сайт будет в сети, дадите адрес, сразу на месте и подскажу и все доделаем.
Здравствуйте! У меня активная ссылка выделяется белым с рамкой, а подчеркнутой и другого цвета как можно сделать?
При прокрутке местоположение тоже не показывает((((
Здравствуйте! Зайдите в стили CSS и найдите эту активную ссылку. Уберите там “border” и “background”.
Чтобы лучше меня понять, почитайте вот это
Товарищи! Если кто-то такой же “ас”, как я, при работе на Вордпресс нужно установить плагин jquery-vertical-mega-menu. (Для бокового меню). Выбираете оформление без стиля, создаёте свой класс в css и приписываете его пунктам меню в разделе “Меню”.
А для главного (горизонтального меню) ищите в стилях слово current. Если оно там есть, значит, можно настроить вид текущей ссылки. Извините за сумбур.
Добрый день. У меня вопрос, как можна сделать, чтобы активным было не только основное меню, но и меню в футоре. класы у 2-х меню отличаются
Здравствуйте, Вова! Используете WordPress?
Спасибо огромное! Спасли меня от битья головой об стену
Облазила кучу сайтов на которых непонятно описывается как написать скрипт и всякие функции php, а тут оказывается WP сам все это за меня уже сделал)) сама бы не догадалась в фаербаг посмотреть! Написала всего 1 строку в css и вуаля) Очень вам благодарна! 
Пожалуйста, Алена! Был рад помочь!
Степан, добрый день!
Прошу прощения,что не совсем по теме, просто увидел в посте схожую тематику и решил обратиться к вам за помощью. Подскажите пожалуйста, а возможно ли сделать так, чтобы при переходе на любую из записей (не страниц) в вордпресс всегда оставался подсвеченным один пункт меню?
HTML
скрипт
При переходах в пределах Level-1 и Level-2 выделение работает, а при переходе дальше нет.
Из меню Level-2 ссылки ведут на записи, когда открывается пост с записью выделение пропадает. Все записи из одной категории Level-1, возможно ли оставить эту категорию подсвеченной.
Буду очень благодарен за подсказку или направление в котором копать. Я очень туг со скриптами…
Спасибо!
С уважением, Алексей.
Здравствуйте, Алексей! Почитайте вот тут.
Прочитайте всю статью + комментарии.
Вы найдете там ответ!
Огромное спасибо!!! На WordPress сработал только Ваш способ (использовал второй). Часов пять безрезультатно лопатил интернет, пока к Вам добрался ))
Пожалуйста, Александр!
Можете использовать класс “li.current_page_item a” для WordPress. Вот CSS стиль:
Подскажите пожалуйста как сделать что бы активная ссылка не пропадала в полной новости. Вот пример localhost/v-mire/ (категория /v-mire/) все работает хорошо и новый клас добавился к тегу
.
А вот все плохо localhost/v-mire/2-post2.html в полной новости тег не добавляется как исправить? Подскажите пожалуйста.
Здравствуйте! Проблема такая: сайт на WordPress, в шаблоне к активной ссылке добавляется элемент со своими стилями. Просто цветной кружок. Как можно добавить такой элемент к активной ссылке?
Здравствуйте!
Здравствуйте. Как сделать, что бы ссылки выделялись только в меню, а на остальной странице слили не менялись?
Огромное спасибо! Второй спобос сразу сработал. Первый не пробовал, но только потому, что не понял.
Добрый день. ЯЯпробую применить код из вашего примера, но не работает. Что я делаю не так?
Пожалуйста!