Могу ли я использовать параметры URL в LESS CSS? - PullRequest
12 голосов
/ 11 февраля 2012

Введение:

Я пробую LESS в среде asp.net mvc.

Я использую без точек для обработки на стороне сервера (и я бы не сталхочу использовать обработку на стороне клиента, особенно после публикации всего проекта).

Мне нужно применить дизайн, в котором существуют разные цветовые схемы в зависимости от разных вещей (например, времени суток).

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

Проблема:

Но мне нужно как-то изменить цветовые темы из внешнего параметра.

Идеи:

Сначала я подумал, что параметр URL, такой как style.less? Theme =fuschia была бы хороша, но я не нашел способа разобрать что-то вроде этого.

Тогда я подумал, что получается очень короткий blue.less, green.less, orange.less, состоящий только из объявленных переменных цвета, и включаяГлавное, чтобы в каждом из них было бы надежное решение.

У меня не было возможности опробовать второе решение, но я подумал, что сейчас самое время спросить совета о наиболее надежном способе.делать это.

Проблема снова в том, что я хочу контролировать некоторые вещи в моем меньшем файле извне.

Ответы [ 2 ]

23 голосов
/ 13 февраля 2012

Да, вы можете (потому что я реализовал эту функцию именно по этой причине).

Dotless поддерживает параметры извне через параметр строки запроса.

<link rel="stylesheet" href="style.less?foo=bar" />

Позволит вам использовать следующее меньше:

@foo = bar;

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

Код, о котором идет речь, очень прост: https://github.com/dotless/dotless/blob/master/src/dotless.Core/Engine/ParameterDecorator.cs

5 голосов
/ 12 февраля 2012

AFAIK, вы не можете передать параметры для dotnetless для использования при компиляции.

Как совет, почему бы просто не вызывать другие файлы меньше?Это было бы довольно легко сделать с помощью свойства Viewbag.

Чтобы сделать разные меньше, вы сначала создаете меньше файлов с каждым набором цветов в них.Затем вы импортируете свой базовый файл CSS.dotnetless объединит определения цвета в родительском файле с использованием в базовом файле.Итак, у вас есть что-то вроде -

@baseGray: #ddd;
@baseGrayDark: darken(@baseGray, 15%);
@baseGrayLight: lighten(@baseGray, 10%);
@import "baseCss.less";

Я только что проверил это на проекте MVC3, и он работает.

...