Как совместить класс и идентификатор в селекторе CSS?
Если у меня есть следующий div:
<div class="sectionA" id="content">
Lorem Ipsum...
</div>
Есть ли способ определить стиль, который выражает идею "A div с id='content'
AND class='myClass'
"?
Или вы просто идем так или иначе, как в
<div class="content-sectionA">
Lorem Ipsum...
</div>
или
<div id="content-sectionA">
Lorem Ipsum...
</div>
Ответы
Ответ 1
В вашей таблице стилей:
div#content.myClass
Изменить: это тоже может помочь:
div#content.myClass.aSecondClass.aThirdClass /* Won't work in IE6, but valid */
div.firstClass.secondClass /* ditto */
и, в соответствии с вашим примером:
div#content.sectionA
Изменить, 4 года спустя: Так как это супер старый, и люди продолжают его находить: не используйте теги tagNames в своих селекторах. #content.myClass
быстрее, чем div#content.myClass
, потому что tagName добавляет шаг фильтрации, который вам не нужен. Используйте tagNames в селекторах только там, где вы должны!
Ответ 2
Существуют различия между #header .callout
и #header.callout
в css.
Вот "простой английский" #header .callout
:
Выделите все элементы с именем класса callout
, которые являются потомками элемента с идентификатором header
.
Вот "простой английский" #header.callout
:
Выберите элемент с идентификатором header
, а также имя класса callout
.
Вы можете прочитать здесь css трюки
Ответ 3
Ну, как правило, вам не нужно классифицировать элемент, указанный id, потому что id всегда уникален, но если вам действительно нужно, должно работать следующее:
div#content.sectionA {
/* ... */
}
Ответ 4
Нет ничего плохого в объединении id и класса на один элемент, но вам не нужно будет идентифицировать его как для одного правила. Если вы действительно этого хотите, можете:
#content.sectionA{some rules}
Вам не нужно div
перед идентификатором, как предполагали другие.
В общем, правила CSS, специфичные для этого элемента, должны быть установлены с идентификатором, и те будут иметь больший вес, чем правила только класса. Правила, заданные классом, будут свойствами, которые применяются к нескольким элементам, которые вы не хотите изменять в нескольких местах, в любое время, когда вам нужно настроить.
Это сводится к следующему:
.sectionA{some general rules here}
#content{specific rules, and overrides for things in .sectionA}
Имеют смысл?
Ответ 5
Вы можете комбинировать идентификатор и класс в CSS, но идентификаторы должны быть уникальными, поэтому добавление класса в селектор CSS будет чрезмерно квалифицировать его.
Ответ 6
используйте: tag.id ; tag#class
в переменных тега в вашем css.
Ответ 7
Идентификаторы должны быть уникальными для документа, поэтому вам не нужно выбирать на основе обоих. Вы можете назначить элемент несколько классов, но с помощью class="class1 class2"
Ответ 8
Я думаю, вы все ошибаетесь. Идентификаторы по сравнению с классом - это не вопрос специфичности; они имеют совершенно разные логические применения.
Идентификаторы должны использоваться для идентификации определенных частей страницы: заголовок, панель навигации, основная статья, авторская атрибуция, нижний колонтитул.
Классы должны использоваться для применения стилей к странице. Скажем, у вас есть общий сайт журнала. На каждой странице сайта будут одни и те же элементы - заголовок, nav, основная статья, боковая панель, нижний колонтитул. Но ваш журнал имеет разные разделы - экономика, спорт, развлечения. Вы хотите, чтобы три секции имели разные взгляды - экономически консервативные и квадратные, спортивные действия-y, развлечения яркие и молодые.
Для этого вы используете классы. Вы не хотите создавать несколько идентификаторов - # article-article и # sports-article и # entertainment-article. Это не имеет смысла. Скорее всего, вы бы определили три класса: экономику, спорт и .entertainment, затем определите идентификаторы #nav, #article и #footer для каждого.
Ответ 9
.sectionA[id='content'] { color : red; }
Не будет работать, если doctype html 4.01, хотя...