Ресурс CSS — сочетание литеральной замены и подстановки во время выполнения

Чтобы включить изменения скинов во время выполнения, которые используют правила, специфичные для браузера, мне нужно объединить две возможности CSS-ресурса — подстановку во время выполнения и литерал.

Например, чтобы иметь динамический градиент кнопки, я бы сделал что-то вроде этого:

button {
   background: literal("-moz-linear-gradient(top, lightBg 0%, darkBg 100%)"); 
   background: literal("-webkit-linear-gradient(top,  lightBg 0%, darkBg 100%)");
   background: literal("-o-linear-gradient(top, lightBg 0%, darkBg 100%)");
   background: literal("-ms-linear-gradient(top,  lightBg 0%, darkBg 100%)");
   background: linear-gradient(top,  lightBg 0%, darkBg 100%); 
}

где lightBg и darkBg оцениваются во время выполнения с использованием @eval.

Проблема в том, что GWT не анализирует литеральную строку, поэтому не оценивает эти два значения. См. здесь.

Является ли это возможным? Спасибо.


person Itzik Yatom    schedule 25.01.2012    source источник


Ответы (1)


Я считаю, что вы можете объединить литералы и обычные css, что может выглядеть примерно так

background: literal("-moz-linear-gradient(") top lightBg 0, darkBg 100 literal(")");

Не уверен, нужен ли этот последний литерал или нет.

person Colin Alworth    schedule 26.01.2012
comment
Работает! и да, нужен последний литерал. Вот правильная версия (с небольшими исправлениями для FF): background: literal("-moz-linear-gradient(") top, lightBg 0%, darkBg 100% literal(")"); - person Itzik Yatom; 26.01.2012
comment
Странно, я мог бы поклясться, что набрал эти знаки процента в первый раз... Рад, что у вас все получилось! - person Colin Alworth; 26.01.2012
comment
Этот обходной путь с «магическими литералами» больше не нужен, начиная с gwt 2.5-rc1. Вы можете просто заменить, как вы сделали в своем вопросе, и это просто сработает. Вот тестовый пример, который команда gwt использует с примером градиентов gwt-code-reviews.appspot.com/1735804/diff/8001/user/test/com/ - person Ajax; 02.09.2012