Можно ли сделать что-то вроде следующего?
.class1{some stuff}
.class2{class1;some more stuff}
Можно ли сделать что-то вроде следующего?
.class1{some stuff}
.class2{class1;some more stuff}
Невозможно использовать ванильный CSS. Однако вы можете использовать что-то вроде:
Сасс снова добавляет CSS. Сасс - это расширение CSS3, добавление вложенных правила, переменные, mixins, селектор наследование и многое другое. Его перевод для хорошо отформатированного стандартного CSS с использованием инструмент командной строки или плагин web-framework.
или
Вместо того, чтобы строить длинный селектор имена для указания наследования, в Less вы можете просто вставить селектор внутри другие селекторы. Это делает наследование прозрачное и таблицы стилей короче.
Пример:
#header {
color: red;
a {
font-weight: bold;
text-decoration: none;
}
}
Не с чистым CSS. Ближайшим эквивалентом является следующее:
.class1, .class2 {
some stuff
}
.class2 {
some more stuff
}
Обновление 1: существует спецификация CSS3 для вложенности уровня 3. Это в настоящее время проект. https://tabatkins.github.io/specs/css-nesting/
Обновление 2 (2019): теперь у нас есть черновик CSSWG https://drafts.csswg.org/css-nesting-1/
В случае одобрения синтаксис будет выглядеть так:
table.colortable {
& td {
text-align:center;
&.c { text-transform:uppercase }
&:first-child, &:first-child + td { border:1px solid black }
}
& th {
text-align:center;
background:black;
color:white;
}
}
.foo {
color: red;
@nest & > .bar {
color: blue;
}
}
.foo {
color: red;
@nest .parent & {
color: blue;
}
}
Статус: оригинальная заявка на 2015 год не была утверждена Рабочей группой.
Не напрямую. Но вы можете использовать расширения, такие как LESS, чтобы помочь вам достичь того же.
Нет.
Вы можете использовать селектор группировки и/или несколько классов для одного элемента, или вы можете использовать язык шаблона и обрабатывать его с помощью программного обеспечения, чтобы напишите свой CSS.
См. также мою статью о Наследование CSS.
Попробуйте это...
Дайте элементу идентификатор, а также имя класса. Затем вы можете вставить # IDName.className в свой CSS.
Здесь лучшее объяснение https://css-tricks.com/multiple-class-id-selectors/
Вы можете сделать это с помощью Javascript:
static generateStyle = (parentSelector, allCss) => {
const reg = /(.+?)\s?\{\s?(.+?)\s?\}+/g;
const matches = allCss.match(reg);
const styles = [];
for (let i = 0; i < matches.length; i++) {
const cssDecleration = matches[ i ];
if (cssDecleration.indexOf('@media') === -1) {
styles.push('${ parentSelector } ${ cssDecleration }');
}
else {
const mediaPos = cssDecleration.indexOf('{');
if (mediaPos === -1) {
continue;
}
const mediaQuery = cssDecleration.substring(0, mediaPos);
const rest = cssDecleration.substring(mediaPos);
const restPlaced = MicroServiceData.generateStyle(parentSelector, rest);
styles.push('${ mediaQuery } ${ restPlaced }');
}
}
return styles.join('\n');
};
Я не считаю, что это возможно. Вы можете добавить class1
ко всем элементам, которые также имеют class2
. Если это нецелесообразно делать вручную, вы можете сделать это автоматически с помощью JavaScript (довольно легко сделать с jQuery).