标题重写为:在移动浏览器中,CSS3的100vh值并非固定不变的
P粉682987577
P粉682987577 2023-08-21 16:49:22
[CSS3讨论组]

我有一个非常奇怪的问题...在我遇到的每个浏览器和移动版本中,都出现了这种行为:

  • 加载页面时,所有浏览器都有一个顶部菜单(例如显示地址栏),当你开始滚动页面时,它会向上滑动。
  • 有时,100vh只在视口的可见部分上计算,所以当浏览器栏向上滑动时,100vh会增加(以像素为单位)
  • 所有布局都会重新绘制和重新调整,因为尺寸已经改变
  • 对用户体验来说,效果不好

如何避免这个问题?当我第一次听说视口高度时,我很兴奋,我以为我可以用它来代替使用JavaScript来设置固定高度的块,但现在我认为唯一的方法实际上是使用JavaScript和一些调整大小的事件...

你可以在这里看到问题:示例网站

有人可以帮我解决/提供一个CSS解决方案吗?


简单的测试代码:


/* 可能我可以追踪问题发生的时候... */
$(function(){
  var resized = -1;
  $(window).resize(function(){
    $('#currenth').val( $('.vhbox').eq(1).height() );
    if (++resized) $('#currenth').css('background:#00c');
  })
  .resize();
})
*{ margin:0; padding:0; }

/*
  这是一个应该保持高度不变的盒子...
  使用min-height允许内容超过视口的高度,如果文本太多
*/
.vhbox{
  min-height:100vh;
  position:relative;
}

.vhbox .t{
  display:table;
  position:relative;
  width:100%;
  height:100vh;
}

.vhbox .c{
  height:100%;
  display:table-cell;
  vertical-align:middle;
  text-align:center;
}
<div class="vhbox" style="background-color:#c00">
  <div class="t"><div class="c">
  这个div的高度应该是视口的100%,并在滚动页面时保持这个高度
    <br>
    <!-- 如果调整大小事件被触发,这个输入框会高亮显示 -->
    <input type="text" id="currenth">
  </div></div>
</div>

<div class="vhbox" style="background-color:#0c0">
  <div class="t"><div class="c">
  这个div的高度应该是视口的100%,并在滚动页面时保持这个高度
  </div></div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


P粉682987577
P粉682987577

全部回复(2)
P粉458725040

你可以尝试在你的css中使用min-height: -webkit-fill-available;而不是100vh。这应该可以解决问题

P粉832212776

不幸的是,这是故意的...

这是一个众所周知的问题(至少在Safari移动版中),这是故意的,因为它可以防止其他问题。 Benjamin Poulain回复了一个webkit bug

Nicolas Hoizey对此进行了相当多的研究:https://nicolas-hoizey.com/2015/02/viewport-height-is-taller-than-the-visible-part-of-the-document-in-some-mobile-browsers.html

没有计划修复

目前,除了在移动设备上避免使用视口高度之外,你没有太多可以做的。Chrome在2016年也进行了更改:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号