Sass - групповой символ имени класса
Возможно ли иметь имя подстановочного класса?
например, у меня есть несколько divs .div-one
, .div-two
, .div-three
и т.д.
Есть ли способ использовать ниже в sass, чтобы выбрать все div с этим именем или лучше всего дать один класс, который охватывает все и уникальные классы на каждом?
.div-*{}
Ответы
Ответ 1
В CSS вы можете использовать селектор атрибутов с ^
:
div[class^="div-"]
==> Выбирает все div
со значением атрибута class
, начинающимся с "div-"
Пример:
div {
height: 20px;
margin-bottom: 5px;
border: 1px solid black;
}
div[class^="div-"] {
border-color: red;
}
<div class="div-one"></div>
<div class="div-two"></div>
<div class="other"></div>
<div class="div-three"></div>
Ответ 2
Небольшое замечание, но я заметил, что при вложении этого правила в Sass вам нужно поставить амперсанд прямо напротив открывающей квадратной скобки.
Это не работает:
.zoomed {
& [class*=" aspect-"] {
margin-bottom: $spacer * 4.0;
}
}
Но это так:
.zoomed {
&[class*=" aspect-"] {
margin-bottom: $spacer * 4.0;
}
}
Обратите внимание на положение амперсанда.
Ответ 3
Вы можете использовать этот метод. Создайте mixin:
@mixin myDIV($name, $color, $color-hover) {
.div-#{$name} {
a {
color: #{$color};
&:focus, &:hover {
color: #{$color-hover};
}
}
}
}
Использование:
@include myDIV('one', $blue, $blue-hover);
@include myDIV('two', $green, $green-hover);
@include myDIV('three', $red, $red-hover);
Вы можете изменить переменные ($ blue) и свойства css в соответствии с вашими стилями.
Ответ 4
Принятый ответ теоретический, но в последнем хром на сегодняшний день:
Для правила CSS:
[class^="div-"]
разметка
class="div-something other-class"
тогда как:
class="other-class div-something"
не соответствует
_ (ツ) _/¯