В заголовке HTML я получил это:
<head>
<title>Title</title>
<link href="styles.css" rel="stylesheet" type="text/css"/>
<link href="master.css" rel="stylesheet" type="text/css"/>
styles.css
мой лист для конкретной страницы. master.css
это лист, который я использую в каждом из моих проектов, чтобы переопределить настройки браузера по умолчанию. Какой из этих стилей имеет приоритет? Пример: первый лист содержит конкретные
body { margin:10px; }
И связанные границы, но второй содержит мои сбросы
html, body:not(input="button") {
margin: 0px;
padding: 0px;
border: 0px;
}
По сути, работает ли каскадный элемент CSS с точки зрения ссылок на таблицы стилей так же, как в типичных функциях CSS? Это означает, что отображается последняя строка?
css
overriding
stylesheet
ian5v
источник
источник
body:not(input="button")
кстати, не является допустимым селектором. Вы, вероятно, хотели разделить это наbody, input:not([type="button"])
.master.css
сначала следует загрузить общий код , затем его проще отменить мастер-стили в вашемstyles.css
.Ответы:
Правила каскадного правила CSS сложны - вместо того, чтобы пытаться их перефразировать, я просто отсылаю вас к спецификации:
http://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#cascade
Вкратце: более конкретные правила имеют приоритет перед более общими. Специфичность определяется на основе количества идентификаторов, классов и имен элементов, а также от того,
!important
было ли использовано объявление. Когда существует несколько правил одного и того же «уровня специфичности», какое бы из них ни появилось, последние выигрывают.источник
!important
непосредственно участвует в каскаде и не имеет ничего общего со спецификой. Специфика связана с селекторами, тогда!important
как используется с объявлениями свойств. (Таким образом, вы правы, говоря, что правила сложны!;)Наиболее специфический стиль применяется:
Если все селекторы имеют одинаковую специфичность, то используется самое последнее объявление:
В вашем случае,
body:not([input="button"])
более конкретно, поэтому используются его стили.источник
Порядок имеет значение. Последнее объявленное значение множественного вхождения будет принято. Пожалуйста, посмотрите тот же, который я разработал: http://jsfiddle.net/Wtk67/
Если вы поменяете местами порядок
.test{}
, то вы увидите, что HTML принимает значение последнего, объявленного в CSSисточник
Последняя загрузка CSS - это МАСТЕР, который переопределит все CSS с теми же настройками CSS
Пример:
reset.css
master.css
Вывод для тега h1 будет иметь размер шрифта: 30 пикселей;
источник
.css
загружается последним. Применяются ли они в порядке их загрузки или в порядке их определения?Попробуем упростить правило каскадирования на примере. Правила идут более конкретно к общему.
Вот код CSS и HTML;
Вот стиль CSS
Вот результат. Независимо от порядка файлов стиля или объявления стиля,
id="important"
применяется в конце (обратите внимание наclass="deadline"
объявленный последний, но не имеет никакого эффекта).<article>
Элемент содержит<aside>
элемент, однако последний объявил стиль вступит в силу, в этом случаеarticle h2 { .. }
на третий элемент h2.Вот результат для IE11: (Недостаточно прав для публикации изображения) DarkBlue: Houston Chronicle News, DarkGreen: последние события в вашем городе, Фиолетовый: Раздел местной рекламы Хьюстона, Черный: Следующий раздел
источник
Это зависит как от порядка загрузки, так и от специфики фактических правил, применяемых к каждому стилю. Учитывая контекст вашего вопроса, вы хотите сначала загрузить общий сброс, а затем страницу. Затем, если вы все еще не видите ожидаемого эффекта, вам нужно изучить специфику используемых селекторов, как уже указывали другие.
источник
Да, это работает так же, как если бы они были на одном листе, однако:
Загрузка заказов имеет значение!
В приведенном выше коде нет гарантии, что
master.css
загрузится послеstyles.css
. Поэтому, еслиmaster.css
он загружен быстро иstyles.css
занимает некоторое время,styles.css
он станет второй таблицей стилей, и любые правила с той же спецификациейmaster.css
будут перезаписаны.Лучше всего сложить все свои правила на одном листе (и минимизировать) перед развертыванием.
источник
master.css
и давstyles.css
загрузку полностью. Затем я позволюmaster.css
загрузить. Стиль «перекрытия»master.css
все еще применяется - и рендеринг блокировался доmaster.css
загрузки и был проанализирован. Примечание : я попробовалrel=preload
наmaster.css' (no halting) and that apparently alters its _declaration_ order by hoisting it above
styles.css`.Лучший способ - максимально использовать классы. В любом случае избегайте селекторов идентификаторов (#). Когда вы пишете селекторы только с одним классом, наследование CSS становится намного проще.
Обновление: узнайте больше о специфике CSS в этой статье: https://css-tricks.com/specifics-on-css-specificity/
источник
Из вашего вопроса я подозреваю, что у вас есть дубликаты выбора, основной набор, который распространяется на все страницы, и более конкретный набор, который вы хотите переопределить основные значения для каждой отдельной страницы. Если это так, то ваш заказ правильный. Мастер загружается первым, и правила в последующем файле будут иметь приоритет (если они идентичны или имеют одинаковый вес). На этом веб-сайте настоятельно рекомендуется ознакомиться со всеми правилами http://vanseodesign.com/css/css-specificity-inheritance-cascaade/. Когда я начал разработку внешнего интерфейса, эта страница прояснила множество вопросов.
источник
Это каскад, который определяет приоритет объявлений. Я могу рекомендовать официальную спецификацию; эта часть хорошо читается.
https://www.w3.org/TR/css-cascade-3/#cascading
Следующие элементы влияют на сортировку в порядке убывания приоритета.
Сочетание происхождения и важности:
Transition
декларации!important
!important
!important
style
атрибутомAnimation
декларацииstyle
атрибутомЕсли два объявления имеют одинаковое происхождение и важность, в игру вступает конкретность , то есть то, насколько четко определен элемент, вычисляя оценку.
#x34y
).level
)li
):hover
), исключая:not
Например, селектор
main li + .red.red:not(:active) p > *
имеет специфику 24.Порядок появления только играет роль , если два определения имеет одинаковое происхождение, значение и специфику. Более поздние определения предшествуют более ранним определениям в документе (включая импорт).
источник
Я полагаю, что при выполнении кода он читается сверху вниз, что означает, что последняя ссылка CSS будет переопределять аналогичные стили в любых таблицах стилей над ней.
Например, если вы создали две таблицы стилей
и в обоих из них вы устанавливаете цвет фона тела на два разных цвета - цвет тела в style2.css будет иметь приоритет.
Вы можете избежать проблемы приоритета стиля, используя
!IMPORTANT
стиль класса, который вы хотите использовать в качестве приоритета, или, возможно, переупорядочив свой<link>
заказ.источник