2016-04-24 2 views
1

На данный момент у меня есть сайт с 5 страницами, и основная навигация отображается с использованием неупорядоченного списка. То, что я пытаюсь достичь, - это «активная» страница, которая будет отображаться сначала в списке.Неупорядоченный список - позиция позиции позиции

Например, если у меня есть эти страницы: «Главная страница | О нас | Контакты | Блог». Когда вы находитесь на странице контактов, это должно переместиться в начало списка, поэтому меню будет выглядеть так: «Контакты | Главная | О блоге».

Что вызывает у меня проблемы, так это то, что меню включено через php, поэтому есть только одно меню для всех страниц, а через PHP я сделал это так, чтобы он добавлял «активный» класс в пункт меню текущей страницы ,

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

Edit:

Это страница навигации, которая включаются в каждую страницу:

  <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> 
+0

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

+0

Почему вы не публикуете код для добавления «активного» класса? Будет легче изменить, чтобы ответить на ваш вопрос. – BeS

+0

Извините, я добавил навигационную страницу, которая включена. – Bonzai

ответ

4

Вот чистый CSS способ сделать это с помощью Flexbox заказа.

enter image description here

ul { 
    … 
    display: flex; 
    flex-direction: column; 
} 

li[class=active] { 
    order: -1; 
    … 
} 

Демо: http://codepen.io/antibland/pen/ZWjdqL

Поддержка: IE10 +, Firefox, Chrome

+0

Действительно классное решение +1 – Edward

+0

@Edward Спасибо, человек. –

+0

Perfect. Спасибо! – Bonzai

0

Jsfiddle link

JQuery:

$(function(){ 
    $("li").on("click", function(){ 
     $('ul').prepend($(this)) 
    }) 
}) 

HTML

<ul> 
    <li>Home</li> 
    <li>Contact</li> 
    <li>About</li> 
    <li>Blog</li> 
</ul> 
+0

Проверьте, что: https://jsfiddle.net/3ves02f8/1/ –

+0

это хорошо ...., вам нужен этот? –

+0

Что значит, мне нужно это? Да, его проще; Я помню, что был поразительным, когда я впервые понял истинное функционирование 'append()/prepend()' –

0

Вы могли бы сделать что-то вроде этого:

$('.large-nav li').each(function() { 
    if($(this).find('a').attr('href') == location) 
    { 
     $('.large-nav ul').prepend($(this)) 
    } 
}) 
+0

Зачем сравнивать его с местоположением, почему бы просто не использовать hasClass ('active')? Этот код не будет работать без изменения объекта местоположения. – Edward

+0

Я пробовал, он работает ... Но вы можете использовать 'hasClass ('active')' также .. Я не думаю, что есть разница. –

+0

Используете ли вы объект глобального местоположения, когда имеете в виду местоположение? – Edward

Смежные вопросы