На данный момент у меня есть веб-сайт с 5 страницами, и основная навигация отображается с использованием неупорядоченного списка. То, что я пытаюсь достичь, – это «активная» страница, которая будет отображаться сначала в списке.
Например, если у меня есть эти страницы: «Главная страница | О нас | Контакты | Блог». Когда вы находитесь на странице контактов, это должно переместиться в начало списка, поэтому меню будет выглядеть так: «Контакты | Главная | О блоге».
Что вызывает у меня проблемы, так это то, что меню включено через php, поэтому для всех страниц есть только одно меню, а через PHP я сделал это так, чтобы он добавлял «активный» класс в пункт меню текущей страницы.
Я не совсем уверен, какое лучшее решение для этого было бы и действительно понравилось бы в любой помощи.
Редактировать:
Это страница навигации, которая включена в каждую страницу:
<nav class="large-nav"> <ul> <li <?php echo ($activePage == 'ourStory') ? "class='active'" : ""; ?> ><a href="our_story.php" title="">OUR STORY</a></li> <li <?php echo ($activePage == 'services') ? "class='active'" : ""; ?> ><a href="services.php" title="">SERVICES</a></li> <li <?php echo ($activePage == 'projects') ? "class='active'" : ""; ?> ><a href="projects.php" title="">PROJECTS</a></li> <li <?php echo ($activePage == 'contact') ? "class='active'" : ""; ?> ><a href="contact.php" title="">CONTACT</a></li> <li <?php echo ($activePage == 'upload') ? "class='active'" : ""; ?> ><a style="margin-right: 0;" href="upload.php#top" title="">UPLOAD</a></li> </ul> </nav>
Вот простой способ CSS, чтобы сделать это, используя упорядочение по Flexbox.
ul { … display: flex; flex-direction: column; } li[class=active] { order: -1; … }
Демо: http://codepen.io/antibland/pen/ZWjdqL
Поддержка: IE10 +, Firefox, Chrome
Ссылка Jsfiddle
JQuery:
$(function(){ $("li").on("click", function(){ $('ul').prepend($(this)) }) })
HTML
<ul> <li>Home</li> <li>Contact</li> <li>About</li> <li>Blog</li> </ul>
Вы могли бы сделать что-то вроде этого:
$('.large-nav li').each(function() { if($(this).find('a').attr('href') == location) { $('.large-nav ul').prepend($(this)) } })