Обмен технологиями

Селекторы стилей CSS [подробное объяснение] (включая идентификатор, класс, тег, подстановочный знак, атрибут, псевдокласс, псевдоэлемент, атрибут содержимого, дочерние элементы, потомки, братья, соседние братья, пересечение, объединение и другие селекторы)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

CSS Селектор стилей, используемый для выбора элементов HTML на странице для добавления стилей CSS.

Сортировать по производительности рендеринга от высокой к низкой С последующим:

ИДЕНТИФИКАТОР Селектор #id

Выбирайте элементы по атрибуту id, с учетом регистра.

<p id="p1" >第一段</p>
  • 1
#p1{
  color: red;
}
  • 1
  • 2
  • 3

Но его использование не рекомендуется, потому что:

  • Селектор id имеет более высокий приоритет и сбрасывать стиль неудобно.
  • Селектор id в основном используется JS

селектор класса .class

Через атрибут класса элементастильИмя класса выбранного элемента чувствительно к регистру.

Наиболее рекомендуемый селектор CSS — это селекторы классов, которые имеют строгую семантику и позволяют легко сбрасывать стили.

<span class="important" >重点词汇</span>
  • 1
.important{
  color: red;
  font-weight: bold;
}
  • 1
  • 2
  • 3
  • 4

К одному и тому же элементу можно добавить несколько классов стилей, разделенных пробелами.

<span class="important big" >巨大的重点词汇</span>
  • 1
.important {
  color: red;
  font-weight: bold;
}
.big {
  font-size: 60px;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

селектор тегов 标签名

Выбирайте элементы по именам тегов, без учета регистра.

<a href="https://www.baidu.com/" target="_blank" >百度</a>
  • 1
a {
  text-decoration: none; /* 无文本装饰(消除默认的下划线) */
}
  • 1
  • 2
  • 3

Не рекомендуется из-за плохой работы селектора тегов и высоких затрат на обслуживание.

селектор подстановочных знаков *

Выбрать все элементы HTML на странице, кроме псевдоэлементов. Это часто используется для очистки стиля браузера по умолчанию, но не рекомендуется, поскольку это снижает производительность.

/* 清除所有html标签默认的外边距和内边距 */
* {
  margin: 0;
  padding: 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5

селектор атрибутов [属性]

Выбирайте элементы на основе их атрибутов и значений атрибутов. Атрибуты не чувствительны к регистру, а значения атрибутов чувствительны к регистру.

селектор атрибутовописывать
[атрибут]Используется для выбора элементов с указанными атрибутами.
[атрибут=ценить]Используется для выбора элементов с указанными атрибутами и значениями.
[атрибут~=ценить]Используется для выбора элементов, значения атрибутов которых содержат указанный словарь. Очень подходит для сценариев, содержащих несколько комбинаций значений атрибутов.
[атрибут|=ценить]Селектор начального фрагмента значения атрибута, значение должно быть целым словом.
[атрибут^=ценить]Соответствует каждому элементу, значение атрибута которого начинается с указанного значения.
[атрибут$=ценить]Соответствует каждому элементу, значение атрибута которого заканчивается указанным значением.
[атрибут*=ценить]Соответствует каждому элементу, значение атрибута которого содержит указанное значение.

Селектор псевдоклассов :状态名

Выбирайте элементы на основе их разных состояний

同一个标签,不同的状态,有不同的样式,就叫做“伪类”
  • 1
Селектор псевдоклассовпримерПример описания
:активныйа:активный Выберите активную ссылку. (Когда мышкой нажимаешь на метку, но не отпускаешь)
:провереноввод:провереноВыберите каждый выбранный<input> элемент.
:неполноценныйввод:отключеноВыберите каждого отключенного<input> элемент.
:пустойр:пустоВыберите каждый элемент, у которого нет дочерних элементов.<p> элемент.
:включеноввод:включенВыберите каждый включенный<input> элемент.
:Первый ребенокp:первый-ребенокВыбирает каждый элемент, который является первым дочерним элементом своего родителя.<p> элемент.
:первый в своем родеp:первый-из-типаВыберите первый в качестве родителя<p>элемент каждого<p> элемент.
:фокусввод:фокусВыберите тот, который привлекает внимание<input> элемент.
:наведите курсора:наведите курсорВыберите ссылку, на которую вы наводите курсор.
:в диапазоневвод:в диапазонеВыбирает значение в указанном диапазоне<input> элемент.
:неверныйввод:неверныйВыбрать все с недопустимыми значениями<input> элемент.
:язык(язык)p:яз(ит)Выберите каждое значение атрибута lang, начиная с «it».<p> элемент.
:последний ребенокp:последний-ребенокВыбирает каждый элемент, который является последним дочерним элементом своего родителя.<p> элемент.
:последний-из-типаp:последний-типВыберите последний в качестве родителя<p>элемент каждого<p> элемент.
:связьссылкаВыбрать все непосещенные ссылки.
:нет(селектор):нет§Выберите каждый не<p> элементы элементов.
:nth-ребенок(н)p:nth-ребенок(2)Выбирает каждый второй дочерний элемент, который является его родительским.<p> элемент.
:nth-последний-ребенок(н)p:nth-последний-ребенок(2)Выбирает каждый второй дочерний элемент, который является родительским.<p> Элементы, считая от последнего дочернего элемента.
:nth-последний-из-типа(н)p:nth-последний-из-типа(2)Выберите второй в качестве родителя<p>элемент каждого<p>элементы, считая от последнего дочернего элемента
:nth-of-type(н)p:nth-типа(2)Выберите второй в качестве родителя<p>элемент каждого<p> элемент.
:только-типаp:only-of-typeВыберите единственный, который является его родительским<p>элемент каждого<p> элемент.
:единственный ребенокp:единственный-ребенокВыбирает единственный дочерний элемент, который является его родительским<p> элемент.
:необязательныйввод:необязательноВыбрать без атрибута «обязательный»<input> элемент.
:вне диапазонаввод:вне диапазонаВыберите значения вне указанного диапазона<input> элемент.
:только для чтенияввод:только для чтенияВыберите те, у которых указан атрибут «только для чтения».<input> элемент.
:читай пишиввод:чтение-записьВыбрать без атрибута «только для чтения»<input> элемент.
:необходимыйввод:обязательноВыберите тот, у которого указан атрибут «обязательный».<input> элемент.
:коренькореньВыберите корневой элемент элемента.
:цель#новости:цельВыберите активный в данный момент элемент #news (щелкните URL-адрес, содержащий имя привязки).
:действительныйввод:действительныйВыбрать все с допустимыми значениями<input> элемент.
:посетила:посетилВыбрать все посещенные ссылки.

Используйте селекторы псевдоклассов в списках

Селектор псевдоклассовзначение
li:nth-ребенок(2)Второй ли
li:nth-ребенок(n)Все вещи
li:nth-ребенок(2n)Все четные ли
li:nth-ребенок(2n+1)Все нечетные ли
li:nth-ребенок(-n+5)Первые 5 ли
li:nth-последний-ребенок(-n+5)Последние 5 ли
li:nth-ребенок(7n)Выберите кратное 7

n означает 0,1,2,3,4,5,6,7,8... (недопустимо, если n меньше 1, поскольку n = 0 не будет выбрано)

Используйте селекторы псевдоклассов в таблицах

  • tr:nth-child(odd):Соответствует строкам 1, 3 и 5 таблицы, что эквивалентноtr:nth-child(2n+1)
  • tr:nth-child(even): Соответствует строкам 2, 4 и 6 таблицы, что эквивалентноtr:nth-child(2n)
  • Практический пример селектора псевдоклассов

    Селектор псевдоэлементов ::

    Используется для выбора и стилизации части элемента, а не всего элемента.

    CSS2中伪元素采用单冒号前缀语法, CSS2.1中伪元素改用双冒号前缀,所有支持双冒号的浏览器同样也支持旧的单冒号语法。考虑浏览器兼容性的话,推荐使用旧的单冒号语法,否则建议使用新的双冒号前缀
    
    • 1

    ::before и::after

    Его необходимо использовать вместе с атрибутом содержимого для установки содержимого до и после элемента. Подробности см.
    https://blog.csdn.net/weixin_41192489/article/details/115100040

    Часто используемые практические примеры:

    ::first-letter Инициалы

    <p>很久很久以前</p>
    <p>Long long ago</p>
    
    • 1
    • 2
    p::first-letter {
      font-size: 2em;
      color: red;
    }
    
    • 1
    • 2
    • 3
    • 4

    Вставьте сюда описание изображения

    ::first-line Первая строка

      <div style="width: 120px">
        <p>很久很久以前,有一个白发苍苍的老人</p>
      </div>
    
    • 1
    • 2
    • 3
    p::first-line {
      color: red;
    }
    
    • 1
    • 2
    • 3

    Вставьте сюда описание изображения

    ::selection Перетащите мышь, чтобы выбрать область

    <p>很久很久以前,有一个白发苍苍的老人</p>
    
    • 1
    p::selection {
      color: red;
      background-color: yellow;
    }
    
    • 1
    • 2
    • 3
    • 4

    Вставьте сюда описание изображения

    ::placeholder текстовый заполнитель

    <input placeholder="请输入" />
    
    • 1
    /* input 不写,则会选中页面所有元素的占位符 */
    input::placeholder {
      color: red;
    }
    
    • 1
    • 2
    • 3
    • 4

    Вставьте сюда описание изображения

    Селектор отношений

    Выбор элементов на основе связей между элементами

    селектор потомков >

    Тег первого уровня, заключенный в тег, является его потомком.

    <div>
        <p>我是div的儿子</p>
    </div>
    
    • 1
    • 2
    • 3
    div>p{
      color:red;
    }
    
    • 1
    • 2
    • 3

    селектор потомков 空格

    Все теги внутри тега являются его потомками.

      <div class="parent">
        <p class="red">我是子代(属于后代)</p>
        <p>我是子代(属于后代,但没有 .red)</p>
        <div>
          <div class="red">我是孙代(也属于后代)</div>
        </div>
      </div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    /* 所有属于.parent元素内部的.red元素都将被染成红色。*/
    .parent .red {
      color: red;
    }
    
    • 1
    • 2
    • 3
    • 4

    Вставьте сюда описание изображения

    селектор родственного уровня ~

    Под тем же родительским элементом выберите указанный элементпослеВсе элементы одного уровня, так что, строго говоря, его следует называть 后面兄弟选择器

    <div>
      <button>按钮1(不会变红)</button>
      <p>段落</p>
      <button>按钮2(会变红)</button>
    </div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    p ~ button {
      color: red;
    }
    
    • 1
    • 2
    • 3

    Вставьте сюда описание изображения

    CSS нет 前面兄弟选择器 вы можете перейти по ссылке ниже, чтобы смоделировать реализацию
    https://blog.csdn.net/weixin_41192489/article/details/121784196

    выбор соседа, брата или сестры +

    Выбирает следующий элемент сразу после элемента

      <div class="parent">
        <p>段落</p>
        <button>按钮1</button>
        <button>按钮2</button>
      </div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    p + button {
      color: red;
    }
    
    • 1
    • 2
    • 3

    Вставьте сюда описание изображения

    Селектор пересечений

    Выберите элементы на странице, которые соответствуют нескольким селекторам одновременно.

    • Между селекторами нет пробелов (пробелы являются селекторами-потомками)
    • Если селектор тегов существует, селектор тегов должен быть размещен первым.
        <p class="red">很久很久以前1</p>
        <p>很久很久以前2</p>
    
    • 1
    • 2
    /* 选中 p 标签中class值含 red 的元素 */
    p.red {
      color: red;
    }
    
    • 1
    • 2
    • 3
    • 4

    Вставьте сюда описание изображения

    Селектор объединения ,

    Среди нескольких селекторов, если один из них удовлетворен, он будет выбран.

    • Используется между несколькими селекторами , отдельный
     <p class="error">报错信息</p>
     <p class="important">重要信息</p>
     <p>其他信息</p>
    
    • 1
    • 2
    • 3
    .error,
    .important {
      color: red;
    }
    
    • 1
    • 2
    • 3
    • 4

    Вставьте сюда описание изображения