我希望能够确定浏览器是否支持 HSL 颜色,如果不支持,那么我想依靠生成的 RGB 颜色(我都生成了)。有没有办法在不实际检查用户使用的浏览器的情况下做到这一点?
问问题
1547 次
3 回答
5
检测很好,但添加后备更好:
#element{
background: rgb(255, 10, 25);
background: hsl(240, 100%, 50%);
}
首先,您设置回退,浏览器最能理解的属性,然后设置新属性。如果不支持这个,它不会覆盖前一个。
虽然,我不知道您需要 HSL 做什么。
于 2010-12-29T19:56:25.020 回答
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 的回答是下面的方法,但出于 paulb 的目的,这是一种方法。
于 2010-12-29T14:51:15.307 回答
1
如果担心使用 HSL 更容易生成颜色但您担心浏览器支持,您可以考虑在业务逻辑中使用 HSL,但在将颜色应用于 DOM 元素时转换为 RGB。
另请参阅以下问题:
HSL to RGB color conversion
于 2016-06-24T23:20:01.683 回答