Почему атрибут цвета .active не применяется?

При наличии активного div для изменения внешнего вида активного элемента меню (с использованием jquery) цвет фона изменяется, как и ожидалось (от белого к черному), однако атрибут цвета текста (от черного к белому) нет. Почему? - и как мне это исправить?

css

.menu {
    width: 475px;
    margin: 0 auto;
}

.menu ul {
    min-width: auto;
    margin: 0 auto 0 auto;
    padding: 23px 0 0 0;
}

.menu li {
    list-style-type: none;
    float: left;
}

/*selected tag changes appearance*/
.active {
    background-color: #4a4a4a;
    color: #FFFFFF;
}

/*attributes of individual nav button*/
.menu a {
    text-decoration: none;
    width: 75px;
    padding: 10px;
    float: left;
    text-align: center;
    color: #4a4a4a;
}

/*changes appearance of menu item on hover*/
.menu a:hover {
    background-color: #4a4a4a;
    color: #FFFFFF; 
    -webkit-transition: color, background-color .4s; /* Safari */
    transition: color, background-color .4s;
}

js

$(document).ready(function(){
    $('.menu a').click(function() {
    $(".menu a").removeClass("active")
    $(this).addClass("active")
    });
});

HTML

<div class="menu">
            <ul>            
                <li><a href="#1">1</a></li>
                <li><a href="#2">2</a></li>
                <li><a href="#3">3</a></li>
                <li><a href="#4">4</a></li>
                <li><a href="#5">5</a></li>
            </ul>
        </div>
</html>

$(document).ready(function() {
  $('.menu a').click(function() {
    $(".menu a").removeClass("active")
    $(this).addClass("active")
  });
});
.menu {
  width: 475px;
  margin: 0 auto;
}
.menu ul {
  min-width: auto;
  margin: 0 auto 0 auto;
  padding: 23px 0 0 0;
}
.menu li {
  list-style-type: none;
  float: left;
}
/*selected tag changes appearance*/

.active {
  background-color: #4a4a4a;
  color: #FFFFFF;
}
/*attributes of individual nav button*/

.menu a {
  text-decoration: none;
  width: 75px;
  padding: 10px;
  float: left;
  text-align: center;
  color: #4a4a4a;
}
/*changes appearance of menu item on hover*/

.menu a:hover {
  background-color: #4a4a4a;
  color: #FFFFFF;
  -webkit-transition: color, background-color .4s;
  /* Safari */
  transition: color, background-color .4s;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu">
  <ul>
    <li><a href="#1">1</a></li>
    <li><a href="#2">2</a></li>
    <li><a href="#3">3</a></li>
    <li><a href="#4">4</a></li>
    <li><a href="#5">5</a></li>
  </ul>
</div>


person F Silv    schedule 02.08.2016    source источник


Ответы (2)


Это связано с специфичностью CSS. Селектор .menu a является более конкретным, чем просто .active, поэтому он имеет приоритет над color. Попробуйте изменить .active на .menu a.active.

person jmoerdyk    schedule 02.08.2016
comment
Предложенное вами изменение мне не подходит. Теперь ни один из обоих атрибутов css не применяется... Тем не менее, этот аргумент имеет для меня смысл! - person F Silv; 03.08.2016
comment
Я исправил это, используя важное правило! хотя и не очень элегантно ;) - person F Silv; 03.08.2016

Попробуйте этот код

/*selected tag changes appearance*/
.menu > ul > li > .active {
    background-color: #4a4a4a;
    color: #FFFFFF;
}
person Mourad karoudi    schedule 02.08.2016
comment
К сожалению, это не работает, когда я меняю его на это... Не могли бы вы, ребята, показать мне фрагмент кода? :) - person F Silv; 03.08.2016