CSS! Важное использование правил, специфика - PullRequest
3 голосов
/ 26 февраля 2011

Я пишу несколько классов PHP, которые будут использоваться для создания плагина Wordpress, но также могут быть использованы в любой другой среде. После самостоятельного тестирования моего сценария все выглядит хорошо, но когда я создал для него плагин WP, возникли конфликты CSS, которые я предвидел. Сначала я планировал использовать специфичность для решения этих проблем, но это не всегда можно сделать. Это тема WP по умолчанию:

#content tr td {
    border-top: 1px solid #E7E7E7;
    padding: 6px 24px;
}

Если я попытаюсь указать td, чтобы не было заполнения, он не будет работать, если я не добавлю идентификатор в свою таблицу, а не в класс. Я видел популярные плагины, которые реализовали правило! Важное для каждого отдельного свойства CSS, а не использовали идентификатор для специфичности. Какой лучше? Я знаю, что правило! Important следует использовать с осторожностью, но добавление идентификатора в мою таблицу противоречит семантике, поскольку будет несколько экземпляров этой таблицы с одним и тем же идентификатором:

Атрибут ID документа язык позволяет авторам назначать идентификатор одного экземпляра элемента в дерево документов.

http://www.w3.org/TR/CSS2/selector.html#id-selectors

EDIT: Альтернативой также может быть обтекание всего в div идентификатором, но если существует правило #content #main td или подобное, оно все равно будет доминировать над моим #someid td. Кроме того, как обсуждается ниже, недопустимо иметь два элемента с одинаковым идентификатором, хотя это может «работать».

1 Ответ

3 голосов
/ 26 февраля 2011

Как я уже говорил в комментариях, вы можете включить правило #content в свой селектор вместе с классом для переопределения исходных стилей , если #content является элементом-оберткой (и он долженбыть, так как если добавить все элементы таблицы, то не будет никакого способа добавить более одной таблицы к сообщениям WordPress, что было бы ... странно).

В любом случае, если вы Если у вас есть , чтобы выбрать между добавлением id s к нескольким элементам и использованием !important в ваших свойствах, я бы использовал !important по той простой причине, что хотя !important может сделать ваши таблицы стилей неуправляемыми, добавив несколько id s также может нарушить любой JavaScript-код, используемый на странице, и нет никакой гарантии, что реализация селектора идентификаторов во всех браузерах может вместить несколько элементов с одинаковым id, поэтому последствия более серьезны.

По сути,выбор между одной крайне не требующейся, но в остальном действительной практикой и недопустимым, неопределенным поведением.

...