Что делает запятые и пробелы в нескольких классах означают в CSS?

Вот пример, который я не понимаю:

.container_12 .grid_6,
.container_16 .grid_8 {
    width: 460px;
}

Это кажется мне этим width: 460px применяется ко всем вышеупомянутым классам. Но почему некоторые классы разделяются запятой (,), и некоторые только пространством?

Я принимаю это width: 460px будет применен только к тем элементам, которые комбинируют классы в пути, упомянутом в файле CSS. Например, к этому будут относиться <div class='container_12 grid_6'> но к этому не будут относиться <div class='container_12'>. Это предположение корректно?

81
задан TylerH 2 June 2015 в 16:30
поделиться

8 ответов

.container_12 .grid_6,
.container_16 .grid_8 {
    width: 460px;
}

Это говорит: «Сделайте все .grid_6 внутри .container_12 и все .grid_8 внутри .container_16 шириной 460 пикселей». Таким образом, оба следующих элемента будут отображаться одинаково:

<div class="container_12">
  <div class="grid_6">460px Wide</div>
</div>
<div class="container_16">
  <div class="grid_8">460px Wide</div>
</div>

Что касается запятых, оно применяет одно правило к нескольким классам, как это.

.blueCheese, .blueBike {
  color:blue;
}

Функционально эквивалентен:

.blueCheese { color:blue }
.blueBike { color:blue }

Но снижает многословие.

140
ответ дан 24 November 2019 в 09:32
поделиться

Вышесказанное означает, что вы применяют стили к двум классам, обозначенным запятой.

Когда вы видите два элемента рядом, не разделенные, можно предположить, что это относится к области внутри области. Таким образом, в приведенном выше стиле этот стиль применяется только к классам grid_6 внутри классов container_12 и классам grid_8 внутри классов container_16.

в примере:

<div class="grid_6">This is not effected</div>
<div class="container_12">
  <div class="grid_6">
    This is effected.
  </div>
</div>

Первый класс grid_6 не будет задействован, в то время как второй класс grid_6 будет, потому что он содержится внутри контейнера container_12.

Оператор, подобный

#admin .description p { font-weight:bold; }

, будет применять полужирный шрифт к тегам

только в областях, имеющих класс "description", которые находятся внутри области с идентификатором "admin", например:

<div id="admin">
   <div class="description">
      <p>This is bold</p>
   </div>
</div>
3
ответ дан 24 November 2019 в 09:32
поделиться
.container_12 .grid_6 { ... }

Это правило соответствует узлу DOM с классом container_12, который имеет потомка (не обязательно дочернего) с классом grid_6, и применяет правила CSS к элементу DOM с классом grid_6.

.container_12 > .grid_6 { ... }

Постановка > между ними говорит, что узел grid_6 должен быть прямым потомком узла с классом container_12.

.container_12, .grid_6 { ... }

Запятая, как отмечали другие, является способом применения правил ко многим различным узлам одновременно. В данном случае правила применяются к любому узлу с классом container_12 или grid_6.

27
ответ дан 24 November 2019 в 09:32
поделиться

Значение width: 460px; будет применено к элементу с классом .grid_8, содержащемуся внутри элементов с . container_16, и элементы с классом .grid_6, содержащиеся внутри элементов с .container_12.

Пробел означает наследие, а запятая - 'и'. Если вы поместите свойства с селектором типа
.class-a, .class-b, то свойства будут применены к элементам с любым из этих двух классов.

Надеюсь, я помог.

5
ответ дан 24 November 2019 в 09:32
поделиться

В вашем примере есть четыре класса и два селектора:

.container_12 .grid_6,
.container_16 .grid_8 {
    width: 460px;
}

Итак .container_12 и .grid_6 - оба класса, но правило width: 460px будет применяться только к элементам с классом .grid_6 , которые являются потомками элемента с классом .container_16 .

Например:

<div class="container_16">
<p class=".grid_6">This has a width of 480px.</p>
<p>This has an unknown width.</p>
</div>
3
ответ дан 24 November 2019 в 09:32
поделиться

Не совсем то, о чем спрашивали, но, возможно, это поможет.

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

Например:

 .class1.class2 {color: # f00; } .class1 .class2 {цвет: # 0f0; } .class1, .class2 {font-weight: жирный; } 
 
Полужирный красный текст
Полужирный текст (не красный)
Полужирный зеленый текст
12
ответ дан 24 November 2019 в 09:32
поделиться

Запятая группирует классы (применяет один и тот же стиль ко всем), пустое место говорит, что следующий селектор должен быть внутри первого селектора.

Поэтому

.container_12 .grid_6,
.container_16 .grid_8 {
    width: 460px;
}

этот стиль применяется только к классу .grid_6, который находится внутри класса .container_12 и к классу .grid_8, который находится внутри .container_16.

7
ответ дан 24 November 2019 в 09:32
поделиться
.container_12 .grid_6,
.container_16 .grid_8 {
    width: 460px;
}

width:460px будет применен только к .grid_6 и .grid_8

Edit: Here is very good article for you

http://css-tricks.com/multiple-class-id-selectors/

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

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