Давайте предположим, что у нас есть следующий код s css:
.a {
.b {
.c {
// rules here
}
}
}
Это приведет к следующему css: .a .b .c
Теперь, если я хочу изменить набор правил .c
, если .a
получит другой класс, мне придется изменить мой s css следующим образом:
.a {
.b {
.c {
// rules here
}
}
&.d {
.b {
.c {
// rules here
}
}
}
}
Если есть несколько модификаций, мой s css станет очень долго, и правила, относящиеся к .c
, будут исключены. Разве нет более простого синтаксиса, чтобы сохранить в коде все правила .c
, чтобы, когда мне нужно что-то изменить, было легче? Я думаю о чем-то в этом роде:
.a {
.b {
.c {
// rules here
^^&.d {
// go up 2 selectors (hence twicte the ^), and add to the selector the `.d` class, then keep on modifying the current selector `.c` here
}
}
}
}
EDIT: Я использую для указания каждого элемента (или большинства, в любом случае) в пути к селектору, поэтому мои селекторы как можно более явным. Приведенный выше пример может быть отражен для кнопки панели инструментов, которая находится глубоко внутри панели, и с подходом basi c мне придется воспроизвести 5 уровней вложенности, чтобы указать некоторый стиль для кнопки, основанный на состоянии панель приборов (ie. боковая панель-открытая). Я мог бы, конечно, добавить класс прямо к кнопке и оформить его таким образом, но я думаю, это излишество, так как в таблице стилей для этого c статуса меняется много разных вещей.
В качестве полного примера, когда я нажимаю эту кнопку c, боковая панель должна выскочить, некоторые другие элементы, которые перекрываются, должны быть сдвинуты вправо и т. Д. c. Мой javascript просто добавляет класс, представляющий статус, на всю панель управления, и я хотел бы оформить все соответствующим образом. Но в этом случае стили для разных элементов, к сожалению, сильно различаются.