Вот пример, который я не понимаю:
.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'>
. Верно ли это предположение?
css
css-selectors
Римский
источник
источник
Ответы:
.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 }
Но снижает многословие.
источник
.container_12 .grid_6
мы обращаемся только к.grid_6
элементам, находящимся внутри.container_12
элементов..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
.источник
<space>
и>
между классами / ид.Не совсем то, что просили, но, возможно, это поможет.
Чтобы применить стиль к элементу, только если у него есть оба класса, ваш селектор не должен использовать пробелы между именами классов.
Например:
.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>
источник
Запятая группирует классы (применяет ко всем один и тот же стиль), пустое место указывает, что следующий селектор должен находиться внутри первого селектора.
Следовательно
.container_12 .grid_6, .container_16 .grid_8 { width: 460px; }
применяет этот стиль только к классу,
.grid_6
который находится внутри.container_12
класса, и к.grid_8
классу, который находится внутри.container_16
.источник
width: 460px;
Будет применяться к элементу с.grid_8
классом, содержащимся внутри элементов с.container_16
классом, а также элементов с.grid_6
классом, содержащимся внутри элементов с.container_12
.Пробел означает наследие, а запятая означает «и». Если вы поместите свойства с помощью селектора, например
.class-a, .class-b
, у вас будут свойства, примененные к элементам с любым из двух классов.Надеюсь, я помог.
источник
В вашем примере четыре класса и два селектора:
.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>
источник
Вышеупомянутое означает, что вы применяете стили к двум классам, обозначенным запятой.
Когда вы видите два элемента рядом, не разделенные, вы можете предположить, что это относится к области внутри области. Таким образом, выше этот стиль применяется только к классам 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>
источник
.container_12 .grid_6, .container_16 .grid_8 { width: 460px; }
width:460px
будет применяться только к.grid_6
и.grid_8
Изменить: вот очень хорошая статья для вас
http://css-tricks.com/multiple-class-id-selectors/
источник
.grid_6
&.grid_8
проживает в.container_12
или.container_16
Комбинации селекторов имеют разное значение - прилагаемое изображение легко объясняет
a) Несколько селекторов, разделенных запятой (
,
) - ко всем выбранным элементам применяются одинаковые стили.div,.elmnt-color { border: 1px solid red; }
Здесь стиль границы применяется к
DIV
элементам и элементам класса CSS.elmnt-color
.<!-- comma example --> <div> Red border applied </div> <p class="elmnt-color"> Red border applied </p>
б) Множественные селекторы, разделенные пробелом - они называются потомковыми селекторами.
div .elmnt-color { background-color: red; }
Здесь стиль границы применяется к
.elmnt-color
применяемым элементам класса CSS, которые являются дочерними элементамиDIV
элемента.<!-- space example --> <div> Red border NOT applied </div> <p class="elmnt-color"> Red border NOT applied </p> <div> Red border NOT applied <p class="elmnt-color"> Red border applied </p> </div>
c) Множественные селекторы, указанные без пробелов - здесь стили применяются к элементам, которые соответствуют всем комбинациям.
div.elmnt-color { border: 1px solid red; }
Здесь стиль границы применяется только к
DIV
элементам с классом CSS.elmnt-color
.<!-- no space example --> <div> Red border NOT applied </div> <p class="elmnt-color"> Red border NOT applied </p> <div> Red border NOT applied <p class="elmnt-color"> Red border NOT applied </p> </div> <div class="elmnt-color"> Red border applied </div>
Подробности размещены на https://www.csssolid.com/css-tips.html.
Примечание. Класс CSS - это всего лишь один из селекторов CSS. Эти правила применяются ко всем селекторам CSS (например, класс, элемент, идентификатор и т. Д.).
источник