Стили пользователя-агента (браузера) по умолчанию для самой ссылки (элемент a
) перезаписывают ваши стили, потому что стили ссылок агента пользователя имеют более высокую специфичность к фактическому стилю, как ваш .current
селектор выбирает элемент списка, который является родительским для ссылки и применяет только некоторые стили к своим дочерним элементам посредством наследования.
Если вы хотите, чтобы ссылка была выделена полужирным шрифтом только в состоянии active
, то вам нужен селектор font-weight property changed on the
active`, как я это делал в примерах ниже.
То, что вы хотите сделать, это дать класс самим ссылкам (элементам a
) и присвоить им свойства. Может использовать имя класса, например .nav-link
. Я предполагаю, что .current
предназначено просто для того, чтобы быть на любой ссылке для текущей страницы. Например:
<ul>
<li><a class="nav-link current" href="#">HOME</a></li>
<li><a class="nav-link" href="about.html">ABOUT</a></li>
</ul>
.nav-link {
color: #0078fe;
}
.nav-link:hover {
color: #fff;
}
.nav-link:active {
color: #0078fe;
font-weight: bold;
}
Если вы подразумевали .current
как класс для ссылки текущей страницы, на которой находится пользователь, вы также можете использовать селектор :not()
, чтобы сохранить hover
и active
заявляет о применении к «ссылке» для текущей страницы, к которой применен класс .current
. Вот так:
.nav-link {
color: #0078fe;
}
.nav-link:not(.current):hover {
color: #fff;
}
.nav-link:not(.current):active {
color: #0078fe;
font-weight: bold;
}
Несмотря на то, что сохранять селекторы простыми и просто применять класс ко всем a
элементам, как указано выше, это лучшая практика, в качестве альтернативы вы можете продолжать иметь класс на каждом li
элемент и затем используйте селектор комбинации потомков.
<ul>
<li class="nav-link current"><a href="#">HOME</a></li>
<li class="nav-link"><a href="about.html">ABOUT</a></li>
</ul>
.nav-link > a {
color: #0078fe;
}
.nav-link > a:hover {
color: #fff;
}
.nav-link > a:active {
color: #0078fe;
font-weight: bold;
}
? РЕДАКТИРОВАТЬ ?
Похоже, что вы на самом деле просите, чтобы стиль ссылки в навигации по-разному, когда вы находитесь на странице, ссылка для которой. Вы делаете это, применяя класс к ссылке на страницу, на которой вы находитесь, как я делал выше, используя класс .current. : активное состояние не имеет к этому никакого отношения, и я думаю, почему я и другие изначально не поняли вас. То, что вы хотите сделать, это:
<ul>
<li><a class="nav-link current" href="#">HOME</a></li>
<li><a class="nav-link" href="about.html">ABOUT</a></li>
</ul>
.nav-link {
color: #0078fe;
}
.nav-link:not(.current):hover {
color: #fff;
}
.nav-link:not(.current):active {
color: #0078fe;
}
.current {
font-weight: bold;
}
Здесь у вас есть nav-link
классы на самих элементах a
, текущая страница также получает класс current
по его ссылке. Вы устанавливаете цвет для ссылки, а также текущее и активное состояния, в то же время удерживая текущую ссылку от получения состояний наведения / активного состояния с помощью комбинационного селектора not()
. Наконец, мы говорим, что все с классом .current
становится жирным. Просто добавьте селектор current
к HTML соответствующей ссылки на каждой странице. Если это одностраничное приложение, вы можете использовать JavaScript для применения класса при нажатии на ссылку. Если у вас есть вопросы, просто дайте мне знать!