JavaRush /Курсы /Python SELF /Комбинированные селекторы

Комбинированные селекторы

Python SELF
30 уровень , 2 лекция
Открыта

1. Виды комбинированных селекторов

CSS комбинированные селекторы позволяют выбирать элементы на основе их иерархического положения относительно других элементов. Это делает их полезными для применения стилей к элементам, которые зависят от контекста, или когда нам нужно стилизовать элементы в сложной структуре. Комбинированные селекторы — это мощный инструмент для точного выбора, когда одного класса или идентификатора недостаточно. Рассмотрим основные виды комбинированных селекторов в CSS, включая селектор потомка, селектор дочернего элемента, селектор соседнего смежного элемента и селектор общего соседа.

Комбинированные селекторы в CSS включают различные способы выборки элементов, основанные на иерархии HTML. Основные виды комбинированных селекторов:

  • Селектор потомка (Descendant Selector): выбирает элементы, которые находятся внутри другого элемента, на любом уровне вложенности.
  • Селектор дочернего элемента (Child Selector): выбирает только прямых (непосредственных) потомков определенного элемента.
  • Селектор соседнего смежного элемента (Adjacent Sibling Selector): выбирает элемент, который следует сразу после другого элемента на том же уровне иерархии.
  • Селектор общего соседа (General Sibling Selector): выбирает все элементы одного уровня, которые следуют после указанного элемента.

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

2. Селектор потомка (Descendant Selector)

Селектор потомка выбирает все элементы внутри другого элемента, независимо от уровня вложенности. Он записывается через пробел между селекторами. Этот тип селектора полезен, когда нужно стилизовать элементы внутри другого элемента, например, все <p> внутри <div> с определенным классом.

CSS

.container p {
  color: blue;
}
HTML

<div class="container">
  <p>Этот текст будет синим, так как находится в контейнере.</p>
  <div>
    <p>Этот текст тоже будет синим.</p>
  </div>
</div>
<p>Этот текст останется без изменений, так как не находится внутри контейнера.</p>

Здесь селектор .container p выберет все элементы <p> внутри элемента с классом container, включая элементы на любом уровне вложенности.

3. Селектор дочернего элемента (Child Selector)

Селектор дочернего элемента выбирает только непосредственных потомков элемента. Он записывается с использованием символа > между селекторами. Этот селектор удобен, когда нужно применить стиль только к элементам верхнего уровня вложенности и не затрагивать более глубокие уровни.

CSS
      
  .container > p {
    font-weight: bold;
  }
      
    
HTML
      
  <div class="container">
    <p>Этот текст будет жирным.</p>
    <div>
      <p>Этот текст останется обычным, так как не является прямым потомком container.</p>
    </div>
  </div>
      
    

Здесь только первый <p> станет жирным, так как он является прямым потомком .container, а вложенный <p> не изменится.

4. Селектор соседнего смежного элемента (Adjacent Sibling Selector)

Селектор соседнего смежного элемента выбирает элемент, который непосредственно следует за другим элементом и находится на одном уровне вложенности. Этот селектор обозначается символом + между селекторами и удобен для применения стилей к элементу, который следует сразу после другого, например, к первому абзацу, следующему за заголовком.

CSS
      
  h2 + p {
    color: green;
  }
      
    
HTML
      
  <h2>Заголовок</h2>
  <p>Этот текст станет зеленым, так как он следует сразу за заголовком.</p>
  <p>Этот текст не изменится, так как он не является смежным элементом после h2.</p>
      
    

Здесь селектор h2 + p изменит цвет только у первого абзаца <p>, который идет сразу за <h2>.

5. Селектор общего соседа (General Sibling Selector)

Селектор общего соседа выбирает все элементы на одном уровне вложенности, которые идут после указанного элемента, независимо от того, находятся ли они непосредственно после него или через несколько элементов. Этот селектор обозначается символом ~ между селекторами.

CSS
      
  h2 ~ p {
    font-style: italic;
  }
      
    
HTML
      
  <h2>Заголовок</h2>
  <p>Этот абзац будет наклонным.</p>
  <div>
    <p>Этот абзац тоже будет наклонным, так как он является соседом h2 на одном уровне вложенности.</p>
  </div>
      
    

В данном примере селектор h2 ~ p выбирает все <p> элементы, которые идут после <h2> на том же уровне, независимо от того, есть ли между ними другие элементы.

6. Пример использования всех комбинированных селекторов

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

HTML

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Пример комбинированных селекторов CSS</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="container">
    <p>Абзац, который является потомком и дочерним элементом .container.</p>
    <div>
      <p>Абзац, который является потомком, но не дочерним элементом .container.</p>
    </div>
  </div>
  <h2>Заголовок</h2>
  <p>Абзац, который является смежным соседом h2.</p>
  <div>Этот блок не повлияет на следующие абзацы.</div>
  <p>Абзац, который является общим соседом h2.</p>
</body>
</html>
HTML

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Пример комбинированных селекторов CSS</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="container">
    <p>Абзац, который является потомком и дочерним элементом .container.</p>
    <div>
      <p>Абзац, который является потомком, но не дочерним элементом .container.</p>
    </div>
  </div>
  <h2>Заголовок</h2>
  <p>Абзац, который является смежным соседом h2.</p>
  <div>Этот блок не повлияет на следующие абзацы.</div>
  <p>Абзац, который является общим соседом h2.</p>
</body>
</html>
CSS

/* Селектор потомка */
.container p {
  color: blue;
}

/* Селектор дочернего элемента */
.container > p {
  font-weight: bold;
}

/* Селектор соседнего смежного элемента */
h2 + p {
  color: green;
}

/* Селектор общего соседа */
h2 ~ p {
  font-style: italic;
}
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
PaSeRouS Уровень 32
30 декабря 2024
Этот абзац тоже будет наклонным, так как он является соседом h2 на одном уровне вложенности. Он не наклонный, так как на другом уровне вложенности в итоге.
Japan_Dragon Уровень 32
18 марта 2025
+