2016-11-29 3 views
0

Я хочу, чтобы при наведении курсора на <li> весь элемент имел выделение синего цвета и что текст в пределах <li> превращается из черного в белый. Я также хочу, чтобы, когда я нажимаю на <li>, активируется <li>, а синий цвет выделяется и меняется от черного до белого текста. Я понимаю, что я должен использовать атрибуты :hover и :active. Вот моя попытка поэтому:Поддерживать Hover/Active над всем родительским элементом li?

HTML:

<div class="facet"> 
    <ul> 
     <li> 
     <a href="" class="link"> 
      Name<span class="count">Count</span> 
     </a> 
     </li> 
    </ul> 
    </div> 

CSS:

//Changes the LINK text to white 
.link:hover { 
    background-color: #2897C5; 
    color: #ffffff; 
} 

//Attempt to change the entire parent element text to white and have a blue highlight, but this doesn't seem to work 
.facet li:active { 
    background-color: #2897C5; 
    color: #ffffff; 
} 

//Normal CSS for the link when it is not hovered over or clicked on 
.link { 
    font-size: 14px; 
    line-height: 1.3; 
    text-decoration: none; 
    display: block; 
    color: #000; 
} 

//White text when you hover over the count 
.count:hover { 
    color: #ffffff; 
} 

//Normal CSS when you don't hover over the count 
.count { 
    position: relative; 
    float: right; 
    color: #bdbdbd; 
} 

NowI имеет целый ряд вопросов с моей попыткой выше. 1. Когда я нависаю над <li>, вся вещь становится синей, что здорово, и текст «Название» также становится белым. Тем не менее, текст «Count» становится только белым, когда у меня есть наведение мыши над этой частью <li>. 2. Когда я нажимаю на <li>, элемент не применяет активное состояние (все это белый текст и синяя подсветка) ко всему элементу.

Любые идеи о том, как я могу улучшить? Благодаря!

+0

Это не то, что ': активный' средства. Это не текущий активный/выбранный элемент, это активный элемент ACTUAL, то есть второй, который вы нажимаете на него, это 'active' - он не поддерживается. Чтобы поддерживать внешний вид, вам нужно иметь какую-либо проверку на стороне сервера для того, чтобы правый элемент активизировался, или некоторую проверку javascript, чтобы сделать его активным. – junkfoodjunkie

ответ

0

Вот лучшая версия с намного меньшим CSS: (нет решения для активных немного, но это должно быть решено за пределами CSS)

ul { 
 
    list-style-type: none; 
 
    } 
 
.facet li:hover,.facet li:hover .link,.facet li:hover .count { 
 
    background-color: #2897C5; 
 
    color: #FFF; 
 
    } 
 

 
.link { 
 
    font-size: 14px; 
 
    line-height: 1.3; 
 
    text-decoration: none; 
 
    display: block; 
 
    color: #000; 
 
    padding: .2em; 
 
} 
 

 
.count { 
 
    position: relative; 
 
    float: right; 
 
    color: red; 
 
}
<div class="facet"> 
 
    <ul> 
 
     <li> 
 
     <a href="#" class="link"> 
 
      Name<span class="count">Count</span> 
 
     </a> 
 
     </li> 
 
    </ul> 
 
    </div>

+0

нет «много» меньше css, всего 3 строки меньше. и это не отвечает на вопрос –

+0

Собственно, он отвечает на вопрос. Невозможно достичь непрерывного активного состояния, используя только css - вы можете достичь этого с помощью бит js, или на стороне сервера, добавляя идентификатор тела или что-то подобное, и нацелитесь на это, но вам придется использовать что-то еще чем чистый CSS. Также я упомянул в комментарии к исходному вопросу. Что касается «намного меньше», я думаю, что это было написано до редактирования, и что было немного дополнений. Слишком ленив, чтобы проверить такие вещи прямо сейчас. – junkfoodjunkie

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