2012-04-30 2 views
7

Я пытаюсь написать код LESS, соответствующий следующему CSS-коду для генерации градиента в IE.Escape character в LESS CSS вставляет нежелательные пробелы

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff9600',endColorstr='#ff6900'); 

Ниже приводится МЕНЬШЕ код:

.gradient(@start_color, @end_color) 
{ 
    filter:~"progid:DXImageTransform.Microsoft.gradient(startColorstr='"@start_color~"',endColorstr='"@end_color~"')"; 
} 
.gradient(#ff9600,#ff6900) 

на компиляции дает следующий код CSS:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=' #ff9600 ', endColorstr=' #ff6900 '); 

Как вы можете видеть, что есть пробелы, вставленные с обеих сторон цвета значения, из-за которых IE не корректно считывает цвета.

Я скомпилировал код LESS с помощью http://crunchapp.net/, а также http://winless.org/ и обе эти же результаты. Есть ли взлом, чтобы избежать этих пространств. Благодарю.

ответ

10

Использовать переменную интерполяцию вместо окончания строки и перезапускать ее.

E.g.

~ "бар @ {имя} Foo"

И без пробелов будет вставлен.

+0

Это работает :). Большое спасибо! –

0

Я не знаком с LESS; Однако, из чего я могу видеть на своей странице:

.class { 
    filter: ~"ms:alwaysHasItsOwnSyntax.For.Stuff()"; 
} 

предполагает, что не должно быть никаких ~ приложенный к переменным и что, если вы пытаетесь пройти одиночные кавычки через, это было бы "'@var'" вместо '"@var"' С одиночные кавычки внутри, а не снаружи. Я сделал здесь немного больше исследований и думаю, что это ответ вместо комментария.

+0

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

3

Я использую LESS.app (www.lesscss.org) ...

Я просто положить

filter: progid:dximagetransform.microsoft.gradient(startColorstr='@{start}', endColorstr='@{stopColor}', GradientType=0); 

и компилируется правильно, как показано ниже:

filter: progid:dximagetransform.microsoft.gradient(startColorstr='#76787a', endColorstr='#9d9ea0', GradientType=0);