Подтвердить что ты не робот

Разница между ".class" и ".class,.class.class"?

Следующая выдержка из документации PrimeFaces показывает, что существует разница между двумя селекторами, описанными в названии:

.ui-widget, .ui-widget .ui-widget {
     font-size: 90% !important;
}

Может кто-нибудь объяснить значение второго селектора ( ".ui-widget.ui-widget" ) для меня? Я понимаю, что он соответствует элементам класса "ui-widget", которые сами являются дочерними элементами других элементов одного и того же класса, но не будут ли они уже выбраны первым селектором?

4b9b3361

Ответ 1

Изменить. Как отмечают @Robin Kanters и другие, здесь есть небольшая разница с добавлением специфичности селектора .class.class. (Это можно увидеть здесь)

В противном случае селектор .class.class является избыточным.

.ui-widget {
     font-size: 90% !important;
}

и

.ui-widget, .ui-widget .ui-widget {
     font-size: 90% !important;
}

дают те же результаты.

FIDDLE

В приведенной выше скрипте вы можете видеть, что одного селектора .ui-widget достаточно для получения рекурсивного наследования размера шрифта.

Ответ 2

когда .ui-widget находится в .ui-widget (поэтому нет комбинированного селектора), тогда размер шрифта будет 90% 90%, с селектором .ui-widget .ui-widget, он устанавливается вначале до 90% используя! important

Это будет делать две вещи:

  • установить размер шрифта компонентов с классом ui-widget до 90% (из родительский)
  • установить размер шрифта компонентов с помощью класса ui-widget и дети другого компонента с классом ui-widget до 90% (из родительский)

причина .ui-widget .ui-widget требовалась в стандартном CSS, чтобы предотвратить обратную проблему: размер шрифта увеличивается во вложенных ui-виджетах.

Без стиля, определенного для .ui-widget .ui-widget, стиль font-size: 90% по умолчанию, применяемый к .ui-widget, приводит к увеличению размера шрифта во вложенном ui-widgets.

Добавив более специфичный селектор .ui-widget .ui-widget с размером шрифта, установленным на 90%, вы убедитесь, что вы получите согласованный размер шрифта, независимо от того, насколько глубоко вы вставляете свои компоненты.

Ответ 3

Это важно. Если в некоторых файлах css есть некоторые другие правила CSS, это может потребоваться для переопределения этих общих правил для определенных элементов. Рассмотрим этот сценарий.

Здесь у нас есть другое Div и другое правило css.

Смотрите демонстрацию с .class.class и demo без .class.class. В таких сценариях это имеет значение. Чтобы переопределить некоторые другие общие правила css

<div class="ui-widget">
    single
</div>

<div class="ui-widget">
    parent
    <div class="ui-widget">
        child
    </div>
</div>

<div>
    <div class="ui-widget">
        child
    </div>
</div>

CSS

.ui-widget, .ui-widget .ui-widget {
     font-size: 150% !important;
}

div .ui-widget{
     font-size: 20% !important;
}

Ответ 4

Примечание. Я использую смешные размеры шрифтов в этом примере, чтобы упростить математику.

Предположим, что у вас был базовый размер шрифта от 100px.

HMTL

<div class="ui-widget">
    <div class="ui-widget"></div>
</div>

Если у вас есть правило

.ui-widget { 
    font-size 90% !important; 
}

Родительский .ui-виджет будет иметь размер шрифта 90px (90% от 100px).
У дочернего .ui-виджета будет размер шрифта 81px (90% от 90px).

С правилом

.ui-widget, .ui-widget .ui-widget { 
    font-size 90% !important;
}

И родительский, и дочерний .ui-widget будут иметь размер шрифта 90px