Редактировать Нижеследующее полезно по другим причинам, но на самом деле, я не думаю, что это помогает решить проблему ОП, заключающуюся в том, использовать ли синтаксис WebKit или Firefox! (Doh) Это помогает узнать, можно ли вообще использовать градиенты.
Изменить еще раз Но! Изучение источника Modernizr показывает нам, как сделать это с помощью функционального теста (они умные, ребята). Вы, вероятно, можете понять это, посмотрев на источник самостоятельно, но вот быстро взломанный пример:
function testGradientSyntax() {
var element;
element = document.createElement("testsyntax");
element.style.cssText =
"background: -webkit-gradient(radial, 45 45, 10, 52 50, 30, from(#A7D30C), to(rgba(1,159,98,0)), color-stop(90%, #019F62))";
if (element.style.background.indexOf("-webkit") >= 0) {
// It's WebKit syntax
log("This supports WebKit syntax");
}
else {
// It's not WebKit syntax
log("This doesn't support WebKit syntax");
}
}
Вы можете использовать Modernizr для этого. Он обнаруживает соответствующий синтаксис и предоставляет вам возможность использовать один файл CSS с обоими синтаксисами.
Пример кода градиента из документов:
button.glossy {
background: #ccc url(gloss.png) 50% 50% repeat-x;
}
.cssgradients button.glossy {
background: #ccc -webkit-gradient(linear, left top, left bottom,
from(rgba(255,255,255, .4)),
color-stop(0.5, rgba(255,255,255, .7)),
color-stop(0.5, rgba(0,0,0, .2)),
to(rgba(0,0,0, .1)));
}
.cssgradients button.glossy:hover {
background-color: #fff;
}
( Редактировать В приведенном выше тексте я удалил строку из конца правила .cssgradients button.glossy
, которая выглядела для меня как ошибка в документации.)
Видите этот .cssgradients
класс? Когда вы запускаете Modernizr, он определяет, является ли это соответствующим синтаксисом, и, если это так, добавляет класс в ваш элемент html
, который включает селектор потомков .cssgradients button.glossy
, так что правило применяется.
К сожалению, все зависит от того, включен ли в браузере Javascript.