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

Ссылка на класс /mixin без полного импорта файла LESS

Я использую тему корней для wordpress: https://github.com/retlehs/roots/

Он уже поставляется с предварительно скомпилированным bootstrap.css и рекомендует использовать app.css для любых настроек. Поскольку у меня нет возможности добавлять классы к кнопкам через html или javascript, я бы хотел использовать источники LESS для ссылки на класс css, например, я хочу дать кнопке submit стиль кнопки начальной загрузки:

input#submit{
.btn;
.btn-primary;
}

Если я использую @import 'bootstrap.less';, он добавляет весь bootstrap css в app.css. Как я могу просто использовать bootstrap.less в качестве ссылки для компиляции?

4b9b3361

Ответ 1

Основной вопрос, который вы задаете,

"Как я могу просто использовать bootstrap.less в качестве ссылки для компиляции?"

Начиная с версии LESS версии 1.5

Для LESS 1.5 теперь можно импортировать файл исключительно как ссылку. Например:

@import (reference) 'bootstrap.less';

Никакой фактический код не будет выводиться из этого файла как CSS, но все становится доступным для использования в качестве mixins.

Оригинальный ответ (хранится для контекста для всех комментариев)

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: неясно, будет ли это работать с 1.3.3, но этот оригинальный ответ, который я действительно верю, имеет некоторую полезность и в более поздних версиях. Однако для того, чтобы действительно получить то, что требовалось OP, рекомендуется новая возможность в LESS 1.5.]

Текущие версии LESS (1.3.3) могут соответствовать этому с помощью пространства имен. Например:

#bootstrapRef() {
  @import: 'bootstrap.less':
}

input#submit{
  #bootstrapRef > .btn;
  #bootstrapRef > .btn-primary;
}

Сделав пространство имен mixin (добавление скобок после имени), оно все равно будет импортировать файл (я не знаю, как получить доступ к нему извне, не импортируя его), но он не должен компилировать фактический код начальной загрузки в ваш окончательный вывод файла css. То, что этот метод должен сделать, - это доступ к классам начальной загрузки, mixins и т.д. Через вызов пространства имен #bootstrapRef >, что позволяет использовать их в ваших собственных определенных классах и т.д.

Я не тестировал полностью, если есть какие-то ошибки, он должен просто теоретически работать.

Ответ 2

Выполнение этого в LESS немного сложно, но может быть достигнуто так:

#bootstrap() {
    .btn() {
        @import "bootstrap/variables.less";
        @import "bootstrap/mixins.less";
        @import "bootstrap/buttons.less";
    }
}

input#submit{
  #bootstrap > .btn;
}

в результате чего некоторые дополнительные классы объявляются из mixins.less и variables.less. В основном только .clearfix, а затем все классы .btn добавляются в input#submit

Смотрите длинный вывод здесь:

http://pastebin.com/ZBAZZ3kS

Ответ 3

Я не уверен, есть ли инструмент для импорта только текущих ссылок CSS правил внутри внешнего файла, но Boostrap имеет очень организованную структуру, поэтому проверьте, находятся ли стили, которые вы ищете, на mixins.less, поэтому вы не нужно импортировать весь файл bootstrap.less.

Кроме того, проверьте этот вопрос, есть несколько хороших рекомендаций для настройки Boostrap.

РЕДАКТИРОВАТЬ: Как полагает ПавлоМихалов, возможно, лучше посмотреть buttons.less

Примечание: Это будет потрясающий инструмент для подобных вещей. Когда-нибудь я буду работать над этим

Ответ 4

Не знаю, что заставило вас поверить, что LESS в настоящее время поддерживает это, поскольку это возможно, опция должна быть намного более явной, в настоящее время она действительно просто импортирует, анализирует, сохраняет куски, выполняет куски в выходной текст.

Если нет ничего явного, чтобы остановить эту последовательность, это не будет делать иначе.

Я только что зарегистрировал запрос функции в разделе LESS, не знаю наверняка, если это было запрошено до этого, но искал и ничего не нашел, надеюсь, что мне не удастся повторить повторение!

https://github.com/cloudhead/less.js/issues/1169

UPDATE Проблемы оказались дублирующими, проблема открыта здесь: https://github.com/cloudhead/less.js/issues/622