Подтвердить что ты не робот

CSS-избыточность при использовании LESS и @import

Мне очень нравится идея и концепция LESS. Тем не менее я наткнулся на ошибку, о которой я довольно давно сообщил автору, но еще не получил никакой обратной связи. Может быть, это только я, кто делает что-то неправильно.

My application.less -File, который выглядит примерно так:

@import "reset";
@import "config";
@import "header";
@import "forms";
[…]

Мне нравится, что можно использовать правило @import для разделения моих файлов, чтобы получить лучший обзор моих объявлений css. Тем не менее, каждый импортированный файл должен снова импортировать файл config.less-File, чтобы использовать доступные в нем микшины и переменные.

Бьюсь об заклад, вы уже знаете, о какой избыточности я еду: Каждый раз, когда config.less импортируется, его "вывод" становится частью application.css.

Мой конфигурационный файл содержит около 200 строк кода. Поскольку я разбил свой CSS файл примерно на 5 файлов (на основе имен моих контроллеров), которые должны повторно импортировать конфигурацию, я получаю около 1000 строк сгенерированного CSS-кода, которые на 100% избыточны.

Единственное решение, которое я могу придумать, - это не разделить мои файлы, чего я действительно хотел избежать.

4b9b3361

Ответ 1

Хотя это и не идеально, практическая причина этого в том, что файлы, которые вы импортируете теоретически, не должны содержать CSS. Как правило, у вас будут переменные и динамические микшины, которые не вносят свой вклад в вывод CSS:

lib.less:

#colors {
    @blue: #0011ff;
    @red: #ee2222;
}
.button (@width: 10px) {...}

main.less:

@import "lib";

a { color: #colors[@blue]; }

вывод, main.css:

a { color: #0011ff; }

#colors {} and .button в этом случае не будет выводиться.

Ответ 2

LESS теперь поддерживает @import-once "stylename.less";

Ответ 3

Возможно, вы можете разделить их в своей среде разработки, а затем объединить их вместе, не требуя всего дополнительного кода, при развертывании на ваш веб-сервер в реальном времени?

Ответ 4

Вы можете использовать динамические микшины в конфигурационном файле LESS, если они объявлены и помечены с использованием $ вместо ..

В config.less:

$mixin
{
  a { color: @light; }
  h2 { //etc.
}

В header.less:

@import "config";
.header
{
  $mixin;
}

Источник. Я также пробовал это, и он работает.