Класс CSS-Less расширяет класс с помощью псевдо класса
Мне было интересно, как я могу сделать что-то вроде следующего с меньшим количеством css:
.btn {
color : black;
}
.btn:hover {
color : white;
}
.btn-foo {
.btn;
&:hover {
.btn:hover;
}
}
Конечно, это просто пример того, что нужно указать, если есть какой-либо способ расширить псевдокласс, чтобы избежать повторного ввода свойств класса :hover
везде, где они мне нужны. Я знаю, что могу создать для этого смесь, но мне интересно, могу ли я избежать этого.
Спасибо
Ответы
Ответ 1
UPDATE:
Если вы не можете изменять внешние файлы, просто переопределите селектор и добавьте отсутствующие состояния:
.btn {
// not adding anything here, won't affect existing style
&:hover {
// adding my own hover state for .btn
background: yellow;
...
}
}
// this will make your foo button appear as in external style
// and have the :hover state just as you defined it above
.btn-foo {
.btn;
}
Теперь лучше?:)
Вам не нужен псевдокласс. Он будет работать:)
Попробуйте следующее:
.btn {
background: yellow;
&:hover { // define hover state here
background: green;
}
}
button {
.btn;
}
Каждый созданный вами элемент <button class='btn'>
наследует все, что было определено, включая состояние зависания. Я думаю, что это одна из главных удивительных особенностей LESS.
Надеюсь, что это поможет.
Ответ 2
В Менее 1.4.0 (1.4.1?)
Это:
.btn {
color : black;
}
.btn:hover {
color : white;
}
.btn-foo:extend(.btn all) {
}
Расширяется до:
.btn,
.btn-foo {
color: black;
}
.btn:hover,
.btn-foo:hover {
color: white;
}
Будьте осторожны, это:
.btn {
color : black;
}
.btn:hover {
color : white;
}
.abc .btn {
margin: 2px;
}
.btn-foo:extend(.btn all) {
}
Выведет это:
.btn {
color : black;
}
.btn:hover {
color : white;
}
.abc .btn {
margin: 2px;
}
.btn-foo:extend(.btn all) {
}
Я не смотрел в SASS более получаса, но я считаю, что более поздний случай - это его поведение по умолчанию (или только) @extend.