Рекомендации по расстановке приоритетов в CSS
1. Приоритет — это вес, присвоенный указанному объявлению CSS, который определяется значением каждого типа селектора в соответствующем селекторе.
2, и когдаПриоритет равен приоритету любого из нескольких объявлений CSS., к элементу будет применено последнее объявление в CSS.
3. Приоритет имеет смысл только при наличии нескольких объявлений одного и того же элемента. Потому что каждое правило CSS, которое действует непосредственно на элемент, всегда берет на себя/берет на себя правила, которые элемент наследует от своих предков.
4. Это видно так: чем конкретнее и скуднее описание селектора, тем выше приоритет, а селектор, объявленный позже, имеет более высокий приоритет, чем селектор, объявленный ранее (однотипные селекторы).
тип селектора
Не влияет на приоритет (его можно понимать как очень низкий приоритет)
-
селектор подстановочных знаков (
*
) - селектор отношений
-
:not()
Отрицательный псевдокласс
Влияет на приоритет (Следующие приоритеты сортировки увеличиваются в порядке)
-
селектор элементов(
h1
p
div
) -
псевдоэлемент (
::before
::after
) -
селектор класса (
.class1
) а такжеселектор атрибутов (a[title]
img[title*=hello]
) Оба имеют одинаковый приоритет, и тот, который объявлен позже, переопределит предыдущий. -
Селектор псевдокласса (
:hover
) -
Селектор идентификатора (
#demo
)
Другие, влияющие на конечный результат
1. Встроенные стилиstyle="xxx"
<a style="color:red;"></a>
2,!important
Некоторые вещи, на которые следует обратить внимание
- Псевдоэлемент не может быть выбран (ID, класс не может его превзойти)
<head>
<style>
.box1::after {
content: "我是伪元素";
color: cyan;
}
#box {
color: red;
}
</style>
</head>
<body>
<div id="box" class="box1" name="lxfriday">
hello div
</div>
</body>
результат我是伪元素
еще не красный, причина в том#box
описываетdiv
, тогда как псевдоэлементы нельзя выбирать другими селекторами. Стиль этого псевдоэлемента унаследован отdiv
.
2. Селекторы классов и селекторы атрибутов имеют одинаковый приоритет. Измените селекторы атрибутов в следующем коде.[name="lxfriday"]
и селектор класса.box1
положение, цвет изменится.
<head>
<style>
.box1:hover {
color: cyan;
}
[name="lxfriday"] {
color: red;
}
.box1 {
color: pink;
}
</style>
</head>
<body>
<div id="box" class="box1" name="lxfriday">
hello div
</div>
</body>
Таким образом, влияние на конечный эффект:!important
> Встроенные стилиstyle
> Селекторы идентификаторов > Селекторы псевдоклассов > Селекторы атрибутов = селекторы классов > Псевдоэлементы > Селекторы элементов (типов) > Селекторы отношений > Селекторы подстановочных знаковПонимание приоритета должно основываться на том, насколько точно селектор описывает цель, обратите внимание на эффект следующего примера:
!important
При использовании объявления стиля с!important
Правило, это объявление имеет приоритет перед любым другим объявлением. Хотя технически,!important
Это не имеет ничего общего с приоритетом, но напрямую связано с конечным результатом. использовать!important
Это плохая привычка, и ее следует избегать, поскольку она нарушает внутренние правила каскадирования в таблицах стилей и затрудняет отладку и поиск ошибок. когда два конфликта!important
Когда объявление правила применяется к тому же элементу, будет использоваться объявление с более высоким приоритетом.
Не используйте встроенные стили!important
Случайно распылялся. Встроенный стиль уже имеет очень высокий приоритет, и если селектор добавил!important
, вы можете рассмотреть возможность определения более точного селектора для переопределения!important
.
Если встроенные стили действительно добавлены!important
, вы можете использовать js для устранения (js не может исключить !important селекторов классов и идентификаторов).
<body>
<div id="box" class="box1" style="color: red !important">
hello div
</div>
<script>
document.querySelector("#box").style.color = "blue";
</script>
</body>
Вот некоторые примеры оптимизации:
- Обязательно оптимизируйте использованиеПриоритет правил стилярешить проблему вместо
!important
- Используйте только на определенных страницах, которым необходимо переопределить общесайтовый или внешний CSS.
!important
- никогда не используйте в своем плагине
!important
, другим будет сложно изменить стиль - никогда не по всему сайту
CSS
используется в коде!important
некоторое освещение!important
способ:
- Просто добавьте еще одну группу
!important
правила CSS, а затем дайте этому селектору более высокий приоритет (добавьте тег, идентификатор или класс); или добавьте тот же селектор, поместив его позицию после исходного объявления (короче, определите правило в конце, чем выиграет);
table td { height: 50px !important; }
.myTable td { height: 50px !important; }
#myTable td { height: 50px !important; }
- Или используйте тот же селектор, но после существующего стиля;
td { height: 50px !important; }
td { height: 55px !important; } /* 应用这规则 */
- или просто перепишите исходное правило, чтобы избежать использования
!important
.
Несколько замечаний о приоритезации CSS
Специфика формы
Приоритет рассчитывается на основе формы селектора. В приведенном ниже примере, несмотря на то, что селектор*[id="foo"]
Выбирается идентификатор, но он по-прежнему используется в качестве селектора атрибута для расчета собственного приоритета.
<head>
<style>
*#foo {
color: green;
}
*[id="foo"] {
color: purple;
}
</style>
</head>
<body>
<div id="foo">
hello div
</div>
</body>
Отображается зеленым цветом. Несмотря на то, что совпадают одни и те же элементы, селектор ID имеет более высокий приоритет. Таким образом, первое объявление стиля вступает в силу.
Игнорировать расстояния в дереве DOM
<head>
<style>
body h1 {
color: green;
}
html h1 {
color: purple;
}
</style>
</head>
<body>
<h1 id="foo">
hello div
</h1>
</body>
показано какpurple
.
О псевдоклассах и псевдоэлементах
псевдоклассэто ключевое слово, добавляемое к селектору, которое указывает особое состояние элемента, который нужно выбрать. Например,:hover
Может использоваться для изменения цвета кнопки, когда пользователь наводит на нее курсор. Использование псевдокласса:xxx
форма представления. Общие псевдоклассы:
-
:link
:visited
:hover
:active
правильно<a>
Этикетки рекомендуют использовать этот порядок-
link
: нормальное состояние ссылки -
visited
: после посещения ссылки -
hover
: когда мышь находится на ссылке -
active
: когда ссылка нажата
-
-
:first-child
:last-child
:nth-child()
:nth-last-child()
:only-child
:not()
:focus
псевдоэлементКлючевое слово прикреплено к концу селекторов, он позволяет изменять стиль определенной части выбранного элемента. Рекомендуемая формулировка для псевдоэлемента::xx
Общие псевдоэлементы
-
::before
::after
::first-line
::first-letter
::selection
Добро пожаловать, чтобы обратить внимание на мой общедоступный номероблако тень небо, принесите вам полный галантерейных товаров, добро пожаловать в групповое обсуждение.