#css #css-selectors
#css #css-селекторы
Вопрос:
Я пытаюсь применить стиль к определенному пункту меню CSS. В меню CSS есть
<div id="cssmenu"> </div>
Итак, все элементы в файле .css являются #cssmenu li ul {
etc. Тем не менее, я хочу применить стиль к заголовкам меню, поэтому я пытаюсь добавить:
<li class="header"><a>Menu Header</a></li>
Когда я пытаюсь добавить стили в свой .css с помощью .header
класса, стили, похоже, не применяются. Нужно ли мне вкладывать класс CSS, например #cssmenu .header
, или что-то в этом роде?
Редактировать:
Вот CSS:
#cssmenu {
background-color: #FFFFCC;
clear: both;
display: inline;
float: left;
list-style: none;
overflow: hidden;
text-align: center;
text-transform: uppercase;
width: 100%;
}
#cssmenu li {
display: inline-block;
}
#cssmenu li a {
display: inline-block;
}
#cssmenu li ul {
/*margin-top: 0px; submenu location relative to bottom of parent */
display: none;
}
#cssmenu li:hover ul {
display: block;
position: absolute;
}
#cssmenu li ul li a {
width: 200px;
}
#cssmenu li:hover > a {
background: #99CC99; /* parent background when hovering over child */
/* shadow around parent when hover */
box-shadow: 5px 5px 25px #000;
-moz-box-shadow: 5px 5px 25px #000;
-webkit-box-shadow: 5px 5px 25px #000;
/*border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;*/
}
#cssmenu li a {
color: #000;
font-weight: bold;
text-decoration: none;
padding: 12px;
}
#cssmenu li a:hover {
background-color: #99CC99;
padding: 12px 12px 11px 12px; /* link background when hover over link */
}
#cssmenu li ul {
background: rgba(255,255,255,0.9); /* child menu background w/ transparency */
padding: 10px 5px;
box-shadow: 5px 5px 25px #BBB;
-moz-box-shadow: 5px 5px 25px #BBB;
-webkit-box-shadow: 5px 5px 25px #BBB;
border-radius: 0px 15px 15px 15px;
-moz-border-radius: 0px 15px 15px 15px;
-webkit-border-radius: 0px 5px 5px 5px;
}
/* display sub-menu as list */
#cssmenu li ul li {
display: block;
text-align: left;
}
#cssmenu li ul li a, #nav li ul li a:hover {
background: transparent;
color: #000;
width: 180px;
font-size: 0.95em;
font-weight: normal;
}
#cssmenu li ul li a:hover {
/*text-decoration: underline;*/
box-shadow: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
border-radius: 0;
-moz-border-radius: 0;
-webkit-border-radius: 0;
}
#cssmenu .menuheader {
color: #bbb;
}
И HTML:
<div id="cssmenu">
<ul>
<li class="menuheader"><a>Store</a>
<ul>
<li><a href="products.htm">Essential Oil Blends</a></li>
....
</ul>
</li>
.....
Комментарии:
1. вы пробовали
#cssmenu .header
?2. Нет, вам не нужно быть таким конкретным. Просто вызов класса будет работать. Можем ли мы посмотреть, как выглядит ваш CSS?
3. Google «Правила специфичности CSS»
4. @Kolby
#cssmenu li ul
является более конкретным (102
), чем.header
(010
)5. Кстати, <li> должен быть внутри <ul> . Следовательно, #cssmenu ul li
Ответ №1:
#cssmenu .header
должно сработать.
Проверьте этот пример, который я создал: http://jsfiddle.net/74JQQ/2 /
Вот простая ссылка, касающаяся селекторов CSS:
#
используется для идентификаторов, а .
для классов (которые вы уже знаете).
Пробел между выборками означает, что вы просматриваете все элементы-потомки.
>
Символ означает, что вы смотрите только на прямые дочерние элементы.
Пример:
<div id="cssmenu">
<ul>
<li class="header"><a>Header1</a></li>
<li class="header"><a>Header2</a></li>
</ul>
<a>Footer</a>
</div>
#cssmenu .header
выберет два <li>
.header
выберет два <li>
#cssmenu > .header
ничего не будет выбрано, поскольку нет элемента с классом «header», который является прямым дочерним элементом #cssmenu
.
#cssmenu a
будет выбран все 3 <a>
элемента.
#cssmenu > a
будет выбран только последний <a>
элемент (который читает нижний колонтитул).
Комментарии:
1. Это было очень информативно. Я «играю» со скрипкой, чтобы попытаться подобрать стиль, соответствующий тому, что я ищу, что намного проще.
2. Неплохо. Мне интересно, не могли бы вы помочь мне с этой скрипкой: jsfiddle.net/GJKLR/1 Я пытаюсь сделать так, чтобы первый заголовок меню выглядел красным (чтобы я знал, что был применен стиль). Я перепробовал кучу разных особенностей, но, похоже, ни одна из них не применима.
3. В итоге я понял это. Я использовал цвет текста, чтобы попытаться определить, применяется ли стиль, но на самом деле стиль переопределялся. Поскольку цвет текста не будет иметь значения в конечном стиле, я попробовал его с фоном, и этот стиль был применен. Ваше объяснение селекторов было очень полезным.
Ответ №2:
Может быть, это работает
#cssmenu:nth-child(1){
/* Here the style you want to add */
}
Как и должно быть, первому дочернему элементу id="cssmenu"
элемента присваивается определенный вами стиль.