Используйте переменную Sass для селектора - CSS-хитрости

Anonim

Допустим, вам нужно использовать определенный селектор в нескольких местах кода. Конечно, это не очень распространено, но кое-что случается. Повторяющийся код обычно дает возможность абстрагироваться. Абстрагировать значения в Sass легко, но с селекторами немного сложнее.

Один из способов сделать это - создать свой селектор как переменную. Вот пример, который представляет собой список селекторов, разделенных запятыми:

$selectors: " .module, body.alternate .module ";

Затем, чтобы использовать это, вам нужно интерполировать переменную, например:

#($selectors) ( background: red; )

Это тоже работает с вложением:

.nested ( #($selectors) ( background: red; ) )

Префикс

Переменная также может быть только частью селектора, например префиксом.

$prefix: css-tricks-; .#($prefix)button ( padding: 0.5rem; )

Вы также можете использовать вложение для префикса:

.#($prefix) ( &module ( padding: 1rem; ) &header ( font-size: 110%; ) &footer ( font-size: 90%; ) )

Селекторы на карте

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

$selectorMap: ( selectorsFoo: ".module", selectorsBar: ".moodule-2" );

Вы можете использовать их по отдельности, например:

#(map-get($selectorMap, selectorsFoo)) ( padding: 1rem; )

Или пропустите их:

@each $selectorName, $actualSelector in $selectorMap ( #($actualSelector) ( padding: 1rem; ) )

Примеры

См. Раздел Pen Sass Variables for Selectors Криса Койера (@chriscoyier) на CodePen.