Как менять выделение заголовка в меню шапки в зависимости от страницы ?

265
22 января 2018, 06:00

В шапке есть меню, в котором выбранная страница выделяется нижней рамкой, как мне имея один CSS файл менять это выделение исходя из страницы ? Т.е. что бы при открытии страницы "Продукция" красная линия была уже под этим пунктом меню ?

Answer 1

Имея только CSS, этого делать невозможно.. Нужно добавить нужный класс к каждой странице в котором пользователь находится, сделать следующим образом просто создать класс .active где те же самые стили и добавлять активному элементу.

Как например в наипростейшем простейшем примере внизу:

$('li').on('click', function() { 
  $('.active').add(this).toggleClass('active'); 
});
body { 
  font-family: Arial; 
} 
 
ul li { 
  position: relative; 
  display: inline-block; 
  text-transform: uppercase; 
  margin-left: 5px; 
  border: none; 
  cursor: pointer; 
} 
 
 
ul li:hover { 
  border-bottom: 2px solid red; 
} 
 
.active { 
  border-bottom: 2px solid red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<ul> 
  <li class='active'>Главная</li> 
  <li>Продукция</li> 
  <li>О нас</li> 
  <li>Личный кабинет</li> 
</ul>

Но для многостраничников желательно выносить меню в отдельный файл и манипулировать им с помощью принятого контекста от сервера.

Answer 2

Отлично работает, спасибо за помощь!

$('li').on('click', function() { 
  $('.active').add(this).toggleClass('active'); 
});
body { 
  font-family: Arial; 
} 
 
ul li { 
  position: relative; 
  display: inline-block; 
  text-transform: uppercase; 
  margin-left: 5px; 
  border: none; 
  cursor: pointer; 
} 
 
 
ul li:hover { 
  border-bottom: 2px solid red; 
} 
 
.active { 
  border-bottom: 2px solid red; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<ul> 
  <li class='active'>Главная</li> 
  <li>Продукция</li> 
  <li>О нас</li> 
  <li>Личный кабинет</li> 
</ul>

READ ALSO
MYSQL корректный запрос

MYSQL корректный запрос

ЗдравствуйтеПодскажите, можно ли, и как, получить одним запросом следующую информацию:

267
C# Склеить 2 Image

C# Склеить 2 Image

Есть 2 Image: Первое (1280x720): И другое (530x352): Нужно получить в 1280x720: Те добавить на первое второе которое < первого на X - 0, Y - 0

271
Асинхронная операция была отменена

Асинхронная операция была отменена

Пытаюсь отправить письмо на электронную почту (код взят из документации Microsoft), но операция отменяется и сообщение на почту не приходитПомогите...

288
NLog в C#. Для чего он?

NLog в C#. Для чего он?

Что такое NLog? Для чего он? Если можно приведите какие-то примеры

368