Подтвердить что ты не робот

Важность иерархии стилей CSS.

Я выполнил некоторые поисковые запросы Google, и до сих пор я не нашел ничего, что могло бы ответить на мой вопрос о порядке или важности CSS.

Например, inline переопределяет внешний. Понял. Добавление! Важно внешне может переопределить inline. Кроме того, из всего, что я когда-либо преподавал, более поздние стили переопределяют более ранние стили. Итак:

h1 { font-size: 12pt; }
h1 { font-size: 14pt; }

отобразит размер шрифта 14pt. Но это не всегда так. Иногда я хочу определить такие стили, как:

<div id="content">
    <input class="regular" type="text" />
    <input class="regular" type="text" />
    <input class="long" type="text" />

а затем в css:

#content input { width: 50%; }
.long { width: 75%; }

но это не всегда работает. Где я могу увидеть порядок важности, потому что все они имеют определенные уровни важности:

input {} 
#content input {}
#content input.regular {}
#content input.long
input.regular {}
input.long {}
.regular {}
.long {}

Мне действительно не нравится писать! важно когда-либо, но если я не могу точно определить порядок важности, то иногда мне приходится менять идентификаторы, классы и т.д.

4b9b3361

Ответ 1

Термин, который вы хотите найти, - это "специфика".

Когда у вас есть два (или более) блока CSS, селектора которых выбирают один и тот же элемент и оба пытаются установить одно и то же свойство, тогда выигрывает блок с более конкретным селектором.

В селекторах CSS 3 подробно описывается, как должна быть рассчитана специфика, и ее разумно читаемая:

Также есть хорошие сообщения в блогах, которые также описывают правила:

(Обратите внимание, что, когда два блока имеют селекторы с одинаковой специфичностью, только тогда правило win блокируется, как в вашем примере с h1 s. Правило в блоке с более конкретным селектором будет переопределять используйте более поздний блок с менее конкретным селектором.)

Ответ 2

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

http://css-tricks.com/specifics-on-css-specificity/

Ответ 3

В этом случае вот что вы делаете

#content input { width: 50%; }
#content .long { width: 75%; }

выбор элемента с его идентификатором будет иметь приоритет, поэтому у вас возникла эта конкретная проблема. добавление идентификатора к вашему выбору и более конкретное решение проблемы

например:

#content input.long { width: 75%; }

еще более специфичен, чем

#content .long { width: 75%; }