Javascript 在没有';不支持大众或vh属性?

Javascript 在没有';不支持大众或vh属性?,javascript,html,css,Javascript,Html,Css,我正在使用CSS3属性,例如VW VH。我需要知道不支持CSS3的旧手机浏览器的影响。 我正在使用VH设置div的高度 .block{ height : 50vh; width : 50vw; } <div class="block"> //do some thing.... </div> .block{ 高度:50vh; 宽度:50vw; } //做点什么。。。。 我知道你的痛苦 在不支持vw或vh的移动浏览器上,属性将被忽略,默认为继承块元

我正在使用CSS3属性,例如VW VH。我需要知道不支持CSS3的旧手机浏览器的影响。 我正在使用VH设置div的高度

.block{
   height : 50vh;
   width  : 50vw;
}
<div class="block">
      //do some thing....
</div>
.block{
高度:50vh;
宽度:50vw;
}
//做点什么。。。。
我知道你的痛苦

在不支持
vw
vh
的移动浏览器上,属性将被忽略,默认为继承块元素的宽度并在
高度
上折叠,而在内联块元素上,
宽度
高度
都设置为折叠

使用
vw
单位,为了兼容性,您可以轻松地将它们切换为%值,但百分比高度单位永远不会按预期工作

在PhoneGap、Cordova甚至我的针对Android用户的网站中,我使用了一个“polyfill”(使不受支持的样式“工作”的代码)以及我的
vw
vh
单元来支持Android 4.3 Jellybean及以下版本:

function orient() {
    var ua = navigator.userAgent;
    if(ua.indexOf('droid 4.3') == -1 && ua.indexOf('droid 4.2') == -1 && ua.indexOf('droid 4.1') == -1 && ua.indexOf('droid 4.0') == -1 && ua.indexOf('droid 2.') == -1) {

      //This version of Android supports vw and vh units!

    } else {

      //Polyfill!

      var w = window.innerWidth, h = window.innerHeight;

      //Examples:

      elem.style.width = (w*.94)+'px'; //width: 94vw
      elem.style.height = (h*.94)+'px'; //height: 94vh
      elem2.style.height = (w*.5)+'px'; //height: 50vw (Opposite viewport unit! % doesn't support that!)

    }
}
window.onresize = function() { window.setTimeout(orient,50); }
window.onresize();
我喜欢Javascript,因为它不会弄乱我的CSS代码,如果浏览器兼容,它也不会执行。比百分比单位好,对吗


希望这个(或它的一个版本)对你的项目有帮助

它只会忽略属性。有趣的是,如果您使用vmax safari,则默认为vw。@Rob Yup。我过火了,那是我的错。我编辑了块元素和内联块元素的默认行为,包括宽度和高度。@Aaron Gillion感谢提供信息…为我提供完整帮助。。根据我的理解(如果我错了,请澄清)。我用的是大众和vh。如果broswer不支持,我们应该查找设备或版本。视情况而定,我们必须更改您的上述代码。如果是。。如何在全球范围内实现上述方法。。如果错了。。请帮助我理解…@shamil您必须找出哪些iPhone版本不支持vw/vh。最大的问题是出于安全原因,苹果不再在
userAgent
中披露iOS版本,因此实际上没有办法确定。然而,没有必要担心,因为98%的iPhone市场份额支持vw/vh单元。Android是什么情况???@shamil我上面的代码示例涵盖了整个Android范围。