CSS класс внутри ID выигрывает
Два вложенных div, внешний идентифицируется идентификатором, а внутренний идентифицируется классом:
<div id="theID">
<div class="aClass">Class inside ID</div>
</div>
Допустим, у нас есть правила для класса и ID
.aClass {color: green; }
#theID { color: yellow; }
Насколько я понимаю, к тексту применимы оба правила, поэтому должно победить правило с более высокой специфичностью (#theID).
Однако по какой-то причине правило класса выигрывает, а текст отображается зеленым.
Это почему?
4 ответа
Спасибо всем. Другими словами, приоритизация специфичности используется только в том случае, если к элементу применяется ПРЯМО несколько правил.
В противном случае применяется таблица стилей родителя, которая рассчитывается аналогично.
Еще одна иллюстрация:
<div id="theID">
<div class="aClass">
<p>Class inside ID and within P</p>
</div>
</div>
И CSS:
.aClass p {
text-transform: lowercase;
}
#theID p {
text-transform: uppercase;
}
Здесь оба правила применяются непосредственно к <p>
Элемент, но из этих двух применяется второе, имеющее более высокую специфичность благодаря наличию селектора идентификатора.
Таким образом, полученный текст будет заглавным.
#theID
более специфичен для внешнего div (прямой стиль, а не унаследованный стиль), поэтому весь текст внутри будет желтым. тем не мение .aClass
более специфичен для внутреннего div, поэтому все внутри него будет зеленым (прямой стиль), а не желтым (унаследованный стиль).
Каждый элемент имеет все свойства CSS. В этом случае есть два div
элементы, и каждый из них имеет свои color
имущество. Эти свойства устанавливаются здесь явно для обоих элементов без конфликтующих правил CSS, поэтому нет сомнений в специфичности или наследовании.
Текст "Класс внутри ID" является текстовым содержанием внутреннего div
элемент, поэтому он получает свой цвет. color
установка для внешнего элемента будет влиять на любой текст внутри этого элемента, который не обернут во внутренний элемент с его собственным набором цветов, но такого текста нет, поэтому настройка не имеет никакого эффекта.
Браузер собирает / читает информацию CSS от внешних до внутренних элементов.
Сначала будет вызван внешний элемент, а затем внутренние элементы.
<div id="theID">
I am Yellow
<div class="aClass">I am Green</div>
</div>
другой пример:
<div id="theID">
I am Yellow
<div class="aClass">
<span style="color:purple">
I am purple
</span>
</div>
</div>
Стиль последних элементов всегда победит.