使用modernizr来检测vh,vw with calc

lor*_*afs 7 css calc viewport-units

所以我遇到了一个问题,浏览器与vh,vw单元兼容并且与calc()兼容,BUT与calc中的vh,vw单元不兼容.所以我不确定如何使用modernizr来测试该特定情况.

有什么想法吗?非常感谢!

Ste*_*ler 8

您可以在Modernizr中添加自定义测试,以便为您检查:

Modernizr.addTest('calcviewportunits', function(){
    var computedHeight, 
        div = document.createElement('div');

    div.style.height = 'calc(10vh + 10vw)';
    document.body.appendChild(div);
    computedHeight = window.getComputedStyle(div).height;
    document.body.removeChild(div);

    return computedHeight !== "0px";
});
Run Code Online (Sandbox Code Playgroud)

在Chrome 26(返回false)和41(返回true)上测试.我不确定哪些浏览器确实做了,不支持这个,但你可以运行以下小提琴来测试它:http://jsfiddle.net/3dthsgv5/6/

这不会测试calc(),我觉得最好分开关注点.calc()在Modernizr中已经存在单独的支持检查(仅在默认配置中),可以在此处找到:如何使用JavaScript检查CSS calc()是否可用?

也许值得注意的是,视口单元尚未得到广泛支持.calc支持但不支持视口单元和视口单元的情况非常罕见.