Микширование в меньшем количестве CSS
Я все еще плохо знаком с использованием Less CSS и не смог найти решение своей проблемы. Я хочу более эффективный результат.
У меня этот код меньше:
.btn-trans {
color: inherit;
background-color: transparent;
transition: all .4s;
&.btn-default {
color: @trans-default;
&:hover {
color: @trans-hover-color;
}
}
&.btn-primary {
color: @trans-primary;
&:hover {
color: @trans-hover-color;
}
}
}
И это вывод CSS:
.btn-trans {
color: inherit;
background-color: transparent;
transition: all .4s;
}
.btn-trans.btn-default {
color: #bdbdbd;
}
.btn-trans.btn-default:hover {
color: #f5f5f5;
}
.btn-trans.btn-primary {
color: #738ffe;
}
.btn-trans.btn-primary:hover {
color: #f5f5f5;
}
Но результат, который я ищу, таков:
.btn-trans {
color: inherit;
background-color: transparent;
transition: all .4s;
}
.btn-trans.btn-default {
color: #bdbdbd;
}
.btn-trans.btn-primary {
color: #738ffe;
}
.btn-trans.btn-default:hover,
.btn-trans.btn-primary:hover {
color: #f5f5f5;
}
С классами наведения вложенные, так как цвет одинаковый.
3 ответа
Решение
Вы можете добиться этого, используя класс, который очень похож на группировку селекторов, которые вы хотите использовать вместе.
Snipet
.custom-class(){
.btn-trans.btn-default:hover,
.btn-trans.btn-primary:hover {
color: #f5f5f5;
}
}/*-- end of the custom class --*/
.btn-trans {
color: inherit;
background-color: transparent;
transition: all .4s;
&.btn-default {
color: #ccc;
&:hover {
color: #ccc;
}
}
&.btn-primary {
color: #ccc;
&:hover {
color: #ccc;
}
}
}
/*-- use of the custom class --*/
.custom-class;
или вы можете пойти на вложенный подход, группируя на верхнем уровне
snipet
.btn-trans {
color: inherit;
background-color: transparent;
transition: all .4s;
&.btn-default {
color: #ccc;
}
&.btn-primary {
color: #ccc;
}
&.btn-default,
&.btn-primary {
&:hover {
color: #ccc;
}
}
}
Сгенерировать CSS вполне нормально, за исключением того, что он стоит еще две строки в размере файла.
Если вы действительно хотите, чтобы ваш вывод, вы можете попробовать это:
.btn-trans {
color: inherit;
background-color: transparent;
transition: all .4s;
&.btn-default {
color: @trans-default;
}
&.btn-primary {
color: @trans-primary;
}
&.btn-default,
&.btn-primary {
&:hover {
color: @trans-hover-color;
}
}
}
Использовать этот
.btn-trans {
color: inherit;
background-color: transparent;
transition: all .4s;
&.btn-default {
color: @color;
}
&.btn-primary {
color: @color;
}
&.btn-default,
&.btn-primary {
&:hover {
color: @color;
}
}
}