Несколько классов css [duplicate]

58
задан 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 }

Но сокращает многословие.

105
ответ дан Sampson 15 August 2018 в 18:16
поделиться
  • 1
    Я понимаю, что мы можем применить одно правило к нескольким классам, разделенным комами. Мне непонятно, почему некоторые классы в примере не разделены запятыми. – Roman 27 July 2010 в 14:53
  • 2
    Когда они разделены пробелом, это проблема с гнездом. Последние находятся в первом. Таким образом, .container_12 .grid_6 обращается только к элементам .grid_6, найденным в .container_12 элементах. – Sampson 27 July 2010 в 14:55

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

Поэтому

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

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

7
ответ дан Cloudanger 15 August 2018 в 18:16
поделиться

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

Когда вы видите два элемента бок о бок, которые не разделены, вы можете предположить, что это относится к области внутри области. Таким образом, в приведенном выше примере этот стиль применяется только к классам 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>

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

Оператор типа

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

применил бы только жирный шрифт к

тегам в областях, которые имеют «описание» класса, которые находятся внутри области с идентификатором «admin», например:

<div id="admin">
   <div class="description">
      <p>This is bold</p>
   </div>
</div>
2
ответ дан clumsyfingers 15 August 2018 в 18:16
поделиться

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

.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
ответ дан James Sumners 15 August 2018 в 18:16
поделиться
.container_12 .grid_6,
.container_16 .grid_8 {
    width: 460px;
}

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

. Редактирование: вот вам очень хорошая статья

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

1
ответ дан Jitendra Vyas 15 August 2018 в 18:16
поделиться
  • 1
    Только если .grid_6 & amp; .grid_8 находится в пределах .container_12 или .container_16 – sshow 27 July 2010 в 14:53
  • 2
    @sshow - Спасибо. вы правы, но это проблема HTML. в соответствии с этим кодом css мой ответ прав – Jitendra Vyas 27 July 2010 в 15:00
.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.

22
ответ дан Steve Madsen 15 August 2018 в 18:16
поделиться
  • 1
    другие сказали, а не? – Kick Buttowski 2 December 2016 в 05:08
  • 2
    Большой ответ Мне нравится тот факт, что он объясняет разницу между <space> и > между классами / идентификаторами. – Alex Lowe 3 January 2018 в 06:30

Не совсем то, что было задано, но, возможно, это поможет.

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

Пример:

.class1.class2 { color: #f00; }
.class1 .class2 { color: #0f0; }
.class1, .class2 { font-weight: bold; }
<div class='class1 class2'>Bold Red Text</div>
<div class='class1'>Bold Text (not red)</div>
<div class='class1'><div class='class2'>Bold Green Text</div></div>

8
ответ дан TheIncorrigible1 15 August 2018 в 18:16
поделиться

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

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

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

5
ответ дан Tim Cooper 15 August 2018 в 18:16
поделиться
Другие вопросы по тегам:

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