Я хочу иметь возможность определить, поддерживает ли браузер цвета HSL, если нет, то я хочу вернуться к сгенерированным цветам RGB (у меня оба сгенерированы). Есть ли способ сделать это, не проверяя, какой браузер использует пользователь?
Как я могу проверить, поддерживает ли мой браузер цвета HSL в Javascript?
Ответы (3)
Простой ответ: http://www.modernizr.com/. Вы можете просмотреть исходный код и изменить его, чтобы использовать только часть, касающуюся HSL.
По сути, он просто создает новый элемент, устанавливает его background-color
, используя значения HSLA, а затем ищет наличие rgba
или hsla
в атрибутах стиля объекта. Если присутствует, то браузер поддерживает HSLA. Очень умно:
function supportsHSLA() {
var style = createElement('a').style
style.cssText = 'background-color:hsla(120,40%,100%,.5)'
return style.backgroundColor.indexOf('rgba') > -1 ||
style.backgroundColor.indexOf('hsla') > -1
})
Обратите внимание, что для регулярного использования CSS ответ Metrobalderas ниже - это путь, но для цели, которую намеревался Павел, это один из способов сделать это.
Обнаружение — это хорошо, но еще лучше добавить запасной вариант:
#element{
background: rgb(255, 10, 25);
background: hsl(240, 100%, 50%);
}
Сначала вы устанавливаете запасной вариант, свойство, которое в основном понимают браузеры, а затем устанавливаете новое свойство. Если этот не поддерживается, он не перезапишет предыдущий.
Хотя я не знаю, для чего вам нужен HSL.
Если вас беспокоит то, что при работе с HSL проще генерировать цвета, но вы беспокоитесь о поддержке браузера, вы можете рассмотреть возможность работы с HSL в своей бизнес-логике, но с преобразованием в RGB при применении цветов к элементам DOM.
Также см. следующий вопрос:
преобразование цветов HSL в RGB