Что пространство означает в селекторе CSS? т.е. Каково различие между .classA.classB и .classA .classB?

Ваша логика перестала работать, если optionalArg передается, но оценивает, поскольку ложь - пробует это как альтернативу

if (typeof optionalArg === 'undefined') { optionalArg = 'default'; }

Или альтернативная идиома:

optionalArg = (typeof optionalArg === 'undefined') ? 'default' : optionalArg;

Использование, какой бы ни идиома передает намерение лучше всего Вам!

86
задан Quentin 20 March 2016 в 13:35
поделиться

2 ответа

.classA.classB относится к элементу, который имеет классы A и B ([ class = "classA classB" ); тогда как .classA .classB относится к элементу с class = "classB" , производным от элемента с class = "classA" .

Изменить: Spec для справки: Селекторы атрибутов (см. раздел 5.8.3 Селекторы классов)

93
ответ дан 24 November 2019 в 08:06
поделиться

Подобный стиль гораздо более распространен и будет нацелен на любой тип элемента класса «classB», который вложен внутри любого типа элемента класса «classA».

.classA .classB {
  border: 1px solid; }

Это было бы работа, например, на:

<div class="classA">
  <p class="classB">asdf</p>
</div>

Этот, однако, нацелен на любой тип элемента, который является как классом «classA», так и классом «classB». Этот тип стиля встречается реже, но все же полезен в некоторых обстоятельствах.

.classA.classB {
  border: 1px solid; }

Это применимо к этому примеру:

<p class="classA classB">asdf</p>

Однако он не повлияет на следующее:

<p class="classA">fail</p>
<p class="classB">fail</p>

(Обратите внимание, что когда элемент HTML имеет несколько классов, они разделены пробелами.)

32
ответ дан 24 November 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: