Есть ли краткая форма для этого селектора CSS

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

Предположим, у нас есть этот HTML:

<div class = "wrapperClass">
    <div class = "someClass">
        <h1>This is a title</h1>
    </div>
</div>

Если я хочу стилизовать элемент <h1>, я поступлю так:

.wrapperClass .someClass h1 { 
    color: red;
}

Предположим, существует вероятность того, что пользователь использует <h2>, <h3>, <h4>, <h5> or even a <h6>, и нам также необходимо рассмотреть эти случаи.

Моя инструкция CSS теперь будет выглядеть так:

.wrapperClass .someClass h1, .wrapperclass .someClass h2, .wrapperClass .someClass h3 ...

Это заявление действительно длинное; вот почему мне интересно, есть ли краткая форма для такого рода случаев или нет.

Взгляните на LESS или SASS

Gerard 04.12.2018 13:46

Это невозможно в стандартном CSS, и это одна из причин, почему препроцессоры CSS, такие как LESS и SASS, становятся популярными.

Lie Ryan 04.12.2018 13:52

В CSS4 это отсортировано - developer.mozilla.org/en-US/docs/Web/CSS/:is

Paulie_D 04.12.2018 14:13
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
3
527
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

(В настоящее время) нет селектора любой заголовок, но есть альтернатива с некоторыми ограничениями:

.wrapperClass .someClass > *

Он будет соответствовать элементу любой, который является прямым потомком .someClass.

Вы можете использовать Sass:

.wrapperClass {
  .someClass { 
    h1, h2, h3, h4, h5, h6 { 
      color: red;
    }
  }
}

Использование с CSS и Sass / Scss.

/* Using space means any of its child element */
.className * {                <element class = "className">
    pointer-events:none;        …
}                                 <element>
/* Using `>` symbol means immediate child element */
.className > * {              <element class = "className">
    pointer-events:none;        <element>
}

.list > ul > li:only-child  {color:red}
.list > ul > li:first-child {color:green}
.list > ul > li:last-child  {color:blue}

.list > ul > li:nth-child(2)       {color:blue}
.list > ul > li:not(.className)    {color:blue}

CSS selectors define the elements to which a set of CSS rules apply.

Child combinator [A> B] «Комбинатор > выбирает узлы, которые являются прямыми дочерними элементами первого элемента.
Descendant combinator [AB] «Комбинатор (пробел) выбирает узлы, которые являются потомками первого элемента.
Universal selector [*] «* будет соответствовать всем элементам документа.

Sass « CSS with superpowers

При написании HTML вы, вероятно, заметили, что он имеет четкую вложенную и визуальную иерархию. CSS, с другой стороны, этого не делает.

.className {
    .className2 {
        color: red;
        width: 600px / 960px * 100%;
    }
}

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

.someClass h1, .someClass h2, ....{
  color: red;
}

Да, вы можете использовать Sass, чтобы упростить эту задачу, вот ваш пример с использованием цикла Sass for:

@for $i from 1 through 6 {
    .wrapperClass .someClass h#{$i} {
        color: red;
  }
}

Вставьте этот фрагмент в игровую площадку Sass здесь, чтобы проверить результат: https://www.sassmeister.com/

Другие вопросы по теме