有没有一种方法可以使用JavaScript检查CSS函数calc
是否可用?
我找到了很多关于使用jQuery获得与calc
相同行为的问题和文章,但我该如何仅检查它是否可用?
css-calc
,目前在非核心检测中使用。他们使用以下代码:Modernizr.addTest('csscalc', function() {
var prop = 'width:';
var value = 'calc(10px);';
var el = document.createElement('div');
el.style.cssText = prop + Modernizr._prefixes.join(value + prop);
return !!el.style.length;
});
/* CSS3 calc() fallback */
#css3-calc {
width: 10px;
width: calc(10px + 10px);
display: none;
}
// CSS3 calc() fallback (for unsupported browsers)
$('body').append('<div id="css3-calc"></div>');
if( $('#css3-calc').width() == 10) {
// Put fallback code here!
}
$('#css3-calc').remove(); // Remove the test element
或者,使用本地JavaScript检查和宽度:
#css3-calc { width: 1px; width: calc(1px + 1px); }
if( document.getElementById('css3-calc').clientWidth==1 ){
// clientHeight if you need height
/* ... */
}
parseInt()
,因为.width()
返回一个数字。 - Martijndisplay: none;
,JS 引擎会将其宽度测量为 0 吗? - Fred1px + 1px
不是必要的,calc(2px)
仍然是一种计算。这导致了我下面更简单的解决方案... - Steve Waring根据Modernizer的新闻页面,其添加了Calc检测功能。 http://modernizr.com/news/
As well as tightening up support for existing tests, we've also added a number of new detects, many submitted by the community:
[...] css-calc
var cssCheck = document.createElement("DIV");
cssCheck.style.marginLeft = "calc(1px)";
if (cssCheck.style.getPropertyValue("margin-left"))
{
alert("calc is supported");
}
cssCheck = null;
-webkit
等)附加到测试中,以检查是否有支持并仅使用符合标准的前缀。因此,根据您代码的其余部分,您可以放弃该行代码。 - Sirko