首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么iOS 10上的最小高度100vh会导致大窗口?

在iOS 10上,当设置一个元素的最小高度为100vh(视口高度)时,可能会出现大窗口的情况。这是由于iOS 10的Safari浏览器在计算视口高度时存在一个bug,导致100vh的计算结果不准确。

具体原因是,在iOS 10的Safari中,当网页有垂直方向的滚动条时,计算视口高度时会包括滚动条的高度,而不是排除滚动条的高度。这就导致了计算出来的100vh值比实际的视口高度要大,从而导致元素的最小高度设置失效,出现了大窗口的情况。

解决这个问题的方法有两种:

  1. 使用JavaScript进行修复:通过JavaScript代码获取视口的实际高度,并将这个高度应用到元素的最小高度上。可以使用以下代码进行修复:
代码语言:txt
复制
function setMinHeight() {
  var vh = window.innerHeight * 0.01;
  document.documentElement.style.setProperty('--vh', vh + 'px');
}

window.addEventListener('resize', setMinHeight);
setMinHeight();

在CSS中,可以使用变量--vh来代替100vh,并将元素的最小高度设置为calc(var(--vh, 1vh) * 100)

  1. 使用其他单位代替vh:如果不想使用JavaScript进行修复,可以考虑使用其他单位来设置元素的最小高度,例如像素(px)或百分比(%)。

总结起来,iOS 10上的最小高度设置为100vh可能会导致大窗口的问题,原因是iOS 10的Safari浏览器在计算视口高度时存在bug。可以通过使用JavaScript修复或者使用其他单位来避免这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你不应该依赖CSS 100vh,这就是原因!

要看到这个问题,你需要在真实手机或模拟器查看你应用程序。在本文中使用 iPhone 13(iOS 15.2)进行测试,下面是结果: 图片 啥,底部按钮跑哪里去了?...图片 为什么100vh问题会发生在移动设备? 我对这个问题进行了一番调查,发现了其中原因。简短答案是,浏览器工具栏高度没有被考虑在内。...如果你想深入了解为什么会发生这种情况,Stack Overflow这个帖子很有帮助。 如何修复移动设备100vh问题? 第一个建议是尽量少用 vh。...仅使用 CSS 在移动设备修复 100VH 问题 时,使用 vh 目的是为了简单地创建与视口高度相等部分。例如,当你在建立登陆页面时,这很常见。...一些开发者喜欢根据窗口内部高度定义一个CSS变量,并使用该变量来设计他们所需元素。

1.3K40

ipad100vh和100%踩坑记「建议收藏」

最近遇到了一个小bug,在ipad编辑word文件虚拟键盘收回时,导致页面的导航条隐藏,且页面的下面会出现一块空白 自己尝试解决方案 通过focusin和focusout对虚拟键盘弹入弹出进行监听...如果在虚拟键盘弹出时元素高度等有变化,那么可以尝试通过这种方式判断虚拟键盘是不是弹出来了....,100vh其实是比视口,即100vh包含了下面的状态栏高度。...我们看一下W3C文档怎么说 即,flex容器中绝对定位子元素脱离flex布局流,也就是说flex: 1对子元素来说已经失效了。...因此他高度为绝对定位中100%设置高度,但是又设置了overflow:hidden,因此才会在虚拟键盘隐藏时出现一部分空白,从而导致了导航条隐藏。

1.3K10
  • 弹指间,重温几个设置满屏小技巧

    不妨了解一下 vh定义法 vh:css3新单位,view height简写,是指可视窗口高度,1vh=视窗高度1%; 既然讲到CSS单位了,麻烦各位再脑补下这个问题: CSS单位都有哪些?...vh单位定义为视窗高度百分比,那岂不是esay? body{ height:100vh; } 搞定,大功告成!...这里扩展了解下vh在移动端设备部分“特性” 我们依然设置body 100vh情况下,分别打开微信内置浏览器、Safari浏览器、Google浏览器 从效果图不难看出,在Safari浏览器、Google...浏览器中100vh这个方案都是不完美的,都出现了滚动条,并不能达到我们预期可视区域满屏高度。...作为一个cv高手,借助搜索引擎我们了解到,Safari把网址栏与工具栏算进了100vh中,是第一个通过选择根据屏幕最大高度为vh定义固定值来更新其实现移动浏览器之一,而后Google浏览器也效仿它。

    1.2K20

    微信小程序布局单位使用

    如在 iPhone6 ,屏幕宽度为750 px,则共有个750 物理像素,则750 rpx = 375px = 750 物理像素 例如 : 1rpx = 0.5px = 1物理像素 但是不同iOS设备...: 1rpx = 0.552px 1px = 1.81rpx 在不同设备rpx与px转换是不相同,但是宽度rpx却是固定,所以可以使用rpx作为单位,来设置布局宽高,不是所有的单位都适合...rpx,字体不适合rpx,导致不同设备看不清。...vh:viewpoint height,视口高度,1vh等于视窗高度1%。 vw和vh是css3中新单位,是一种视窗单位,在小程序中也同样适用。...小程序中,窗口宽度固定为100vw,将窗口宽度平均分成100份,1份是1vw 小程序中,窗口高度固定为100vh ,将窗口高度平均分成100份,1份是1vh [图片.png] vmin:vw和vh中较小那个

    3.1K61

    CSS | 视差滚动 | 笔记

    例如,较远东西(即 z 轴负平移)移动得更慢。相反,距离较近东西(即 z 轴正平移)移动得更快。 另一个物理效应是规模。 如果我们把一些东西移得更远,它就会显得更小。...视口/视窗 (屏幕可见部分(去除书签栏等, 真正用于渲染页面部分), 非整个浏览器窗口) height:100% 铺满父容器高度 height:100vh 铺满屏幕(viewport)高度 "100vh...vh 优势在于能够直接获取高度, 而用 % 在没有设置 body 高度情况下, 是无法正确获得可视区域高度100vh 在不同浏览器实现方式也有一点微妙变化, 这使得它几乎毫无用处。...这些浏览器没有将 100vh 高度调整为视口高度变化时屏幕可见部分,而是将 100vh 设置为隐藏地址栏浏览器高度。...当页面加载时,将高度设置为 window.innerHeight 将正确地将高度设置为窗口可见部分。 如果地址栏是可见,那么 window.innerHeight 是全屏高度

    73321

    避免在移动端页面中使用100vh

    如果要设置一个元素样式使它占据整个屏幕高度,那么你可以设置height: 100vh,这样你就拥有一个完美的全屏元素,该元素随着视口变化而调整大小!可惜是,事实并非如此。...结果导致:当地址栏可见时,屏幕底部将被切断,从而破坏了开始时100vh目的。...在页面加载时,将高度设置为window.innerHeight可以将高度正确设置为窗口可见部分高度。 如果地址栏可见,则window.innerHeight将为全屏高度。...例如,尝试在移动浏览器打开wordsheet.io/demo/V3Y。无论地址栏是否可见,屏幕都将是视口高度。...遗憾是,在不依赖JavaScript情况下,仍然没有一种简单方法来使元素占据整个视口高度100vh是如此接近伟大(greatness),但考虑到它在移动设备局限性,最好避免使用它。

    1.6K30

    屏开发你需要知道哪些

    vw 100vw 等于当前窗口屏幕得宽度;vh 100vh 等于当前窗口屏幕得高度;rem 主要根据根元素body得font-size:12px, 1rem 等于12px, 然后跟用窗口得大小赋值给body...真适配又分为 高度适配、宽度适配。 宽度适配就是根据用户得屏幕窗口宽度发生变化做到一个界面适配,比如全部都使用vw。...高度适配是根据用户屏幕窗口发生变化达到一个界面适配,比如使用vh;其实个人认为没必要做高度适配、都根据宽度vw达到一个界面适配就好了,主要是因为做高度适配得话使用vh,再小点得屏幕 很容易就发生文本重叠...、界面不美观、因为文字大小再浏览器最小是12px嘛。...屏界面布局 其实一般屏布局又一个header(主标题、时间展示)、side (副标题:屏幕两侧可能会分为4块4个维度去展示当前屏一些信息)、main(屏主视图)、footer(底部)。

    88210

    css3新发现height:100vh;

    vh/vw vh: 相对于视窗高度, 视窗被均分为100单位vh; vw: 相对于视窗宽度, 视窗被均分为100单位vw; vmax: 相对于视窗宽度或高度中较大那个。...其中最大那个被均分为100单位vmax; vmin: 相对于视窗宽度或高度中较小那个。...其中最小那个被均分为100单位vmin; 视区所指为浏览器内部可视区域大小, 即window.innerWidth/window.innerHeight大小,不包含任务栏标题栏以及底部工具栏浏览器区域大小...不过calc()最大好处就是用在流体布局,可以通过calc()计算得到元素宽度。 calc是 css3提供一个在css文件中计算值函数: 用于动态计算长度值。...“/” 运算; calc()函数使用标准数学运算优先级规则; calc(100vh - 10px) 表示整个浏览器窗口高度减去10px大小 calc(100vw - 10px) 表示整个浏览器窗口宽度减去

    63820

    手机软键盘弹起导致页面变形一种解决方案

    最近用 uniapp(一种第三方 app 开发框架) 开发 app,其中一个页面有十几个 input 输入框,在点击 input 输入时,软键盘弹起,导致页面往上顶,底部按钮也全部弹到页面上面去了,布局全被打乱...一种可行解决方案:给页面设置一个最小高度,即一个能让所有元素按原来布局排列高度。...举例: 我开发 APP 运行在 ipad,横屏显示时,高度为 768px ,我可以把 768px 当做页面的最小高度。....app { min-height: 768px; /* 原来定义高度 100% */ height: 100vh; } ?...软键盘还是会弹起,因为页面最小高度被设为了 768px,所以此时总高度为 768px + 软键盘高度,超出了屏幕高度(ipad横屏屏幕高度为768px)。

    2.4K40

    css视口单位vw,vh妙用(embed篇)

    ,就是写死播放器长宽,导致不能随网页大小变化自由变换尺寸。...前天,在往博客折腾B站视频时,无意间灵机一动,想到了个好主意,就是使用vw单位,配合使用calc。...only screen and (max-width:767px){ embed{ height: calc(9 * 100vw/ 16);width: 100%;} } 其实就是对于电脑端设备,在宽度设置,...本来,文章写道这里就应该结束了,但是突然想到了香菇社长那个超宽屏幕,仅仅是上述代码肯定会导致一个问题,视频高度可能超出屏幕高度。 怎么办呢?想了一下,觉得这样比较简单!...在电脑端css加入下面的东东 max-height:100vh;/*限制视频高度最大不能超过浏览器窗口高度*/ max-width:calc(16 * 100vh/ 9);/*限制视频宽度最大不能超过浏览器窗口高度

    1.1K30

    网站自适应布局为什么我要抛弃rem,改用vw?

    在html文件头部放入一段压缩过js代码,是不是让你很难受?来了解下vw吧,能让你代码更纯粹。...但这种方案有弊端(弊端之一:和根元素font-size值强耦合,系统字体放大或缩小时,导致布局错乱;弊端之二:html文件头部需插入一段js代码 ),本文将介绍一种更优秀纯粹方案。...百分比%是根据父元素宽度或者高度进行计算,而vw vh固定按照viewport来计算,不会受父元素宽高度影响。...我们来看看vw和rem兼容性。  ? ? 相较之下,vw单位兼容性比rem稍差,ios8、安卓4.4及以上才完全支持。这也是为什么之前rem布局一直更流行原因。...总结 目前ios8、安卓4.4以下用户已经非常少了,caniuse上面显示,在中国这部分用户只有1.2%,比例已经非常低了,而这部分用户手机估计只会打打电话不会使用互联网(还是需根据各自产品用户数据分析来决定是否使用

    3.4K10

    css3中width:100vh以及calc(100vh + 10px)

    vh/vw vh: 相对于视窗高度, 视窗被均分为100单位vh; vw: 相对于视窗宽度, 视窗被均分为100单位vw; vmax: 相对于视窗宽度或高度中较大那个。...其中最大那个被均分为100单位vmax; vmin: 相对于视窗宽度或高度中较小那个。...其中最小那个被均分为100单位vmin; 视区所指为浏览器内部可视区域大小, 即window.innerWidth/window.innerHeight大小,不包含任务栏标题栏以及底部工具栏浏览器区域大小...不过calc()最大好处就是用在流体布局,可以通过calc()计算得到元素宽度。 calc是 css3提供一个在css文件中计算值函数: 用于动态计算长度值。..., “/” 运算; calc()函数使用标准数学运算优先级规则; calc(100vh - 10px) 表示整个浏览器窗口高度减去10px大小 calc(100vw - 10px) 表示整个浏览器窗口宽度减去

    89020

    一步一步,开始上手Mac 开发(三)

    窗口App 再或者你把窗口缩小(如下图),一部分需要显示内容已经无法看见了,因此我们需要明显设置一个窗口最小幅度,这样我们应用才可以正常使用 ?...查看view size inspect页 1.4 选择mainMenu.xib,然后选择window,根据一步我们记下view 窗口size来设置window最小尺寸: ?...设置table view autosizing属性 设置完成后,运行应用,你会发现当我们改变窗口大小时,table view 高度窗口变化,但宽度是固定不变,这正是我们需要效果 * 如果你发现...table view 高度并没有你预料中跟随窗口高度变化,请确认你view 设置是否正确(如下图:) ?...image view autoresizing设置 运行工程,我们可以看到所有的控件都会在窗口大小改变时候相应调整合适尺寸或位置,这样看起来比我们之前没有设置窗口适配要美观一些了,当然,若是觉得窗口过大导致

    96720

    给萌新HTML5 入门指南

    广义HTML5是HTML最新修订版本,由万维网联盟(W3C)于2014年10月完成标准制定。...一些语义化标签如section、nav在使用时和传统div并无区别,但这种标签更有利于搜索引擎索引整理,利于智能手机、Pad等小屏设备适配,以及方便残障人士使用。...Web Workers,JavaScript单线程,复制js需算导致页面出现假死。如果js操作不需要访问页面window,那么可以放在web worker中并行处理。...下面我们通过一个例子来展示Flex布局易用性,下图是一个典型单页应用样式,结构分为header,aside,footer和main四部分。...body设置高度 100vh, 这里使用了CSS3 新单位vh,即 view height 视窗高度100vh相当于html, body 高度100%,同样还有vw代表视窗宽度 body设置flex

    1.3K41

    移动端避免使用100vh

    如果要设置元素样式以占据整个屏幕高度,则可以设置height: 100vh,您拥有一个完美的全屏元素,该元素随着视口变化而调整大小!可悲是,事实并非如此。...这些浏览器没有将100vh高度调整为视口高度变化时屏幕可见部分,而是将100vh设置为浏览器高度,并隐藏了地址栏。结果是,当地址栏可见时,屏幕底部将被切除。...页面加载时,将高度设置为window.innerHeight可以将高度正确设置为窗口可见部分。如果地址栏可见,则window.innerHeight将为全屏高度。...例如,尝试在移动浏览器打开wordsheet.io/demo/V3Y 。无论地址栏是否可见,屏幕都将是视口高度。...遗憾是,在不依赖JavaScript情况下,仍然没有一种简单方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备局限性,最好避免使用它。

    2K20

    移动端避免使用100vh

    CSS中视口单位听起来很棒。如果要设置元素样式以占据整个屏幕高度,则可以设置height: 100vh,您拥有一个完美的全屏元素,该元素随着视口变化而调整大小!可悲是,事实并非如此。...这些浏览器没有将100vh高度调整为视口高度变化时屏幕可见部分,而是将100vh设置为浏览器高度,并隐藏了地址栏。结果是,当地址栏可见时,屏幕底部将被切除。 如下所示: ?...页面加载时,将高度设置为window.innerHeight可以将高度正确设置为窗口可见部分。如果地址栏可见,则window.innerHeight将为全屏高度。...例如,尝试在移动浏览器打开wordsheet.io/demo/V3Y 。无论地址栏是否可见,屏幕都将是视口高度。...遗憾是,在不依赖JavaScript情况下,仍然没有一种简单方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备局限性,最好避免使用它。

    1.8K20

    移动端bug汇总(一)

    A:根本原因是-webkit-tap-highlight-color,这个属性是用于设定元素在移动设备(如Adnroid、iOS被触发点击事件时,响应背景框颜色。...input里面placeholder字体大小 A:代码如下 ::-webkit-input-placeholder{ font-size:10pt;} 8.audio元素和video元素在ios和andriod...-- 选择视频 --> 10.输入框自动填充颜色 Q: 针对input标签已经输入过针对曾经输入内容填充黄色背景,这是webkit...translate3d(0, 0, 0); -ms-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); 12.用户设置字号放大或者缩小导致页面布局错误...important; margin: 0; } 14.实现横屏竖屏方案 css 用 css3媒体查询,缺点是宽度和高度不好控制 @media screen and (orientation

    3.2K130

    分享12个实用 CSS 进阶小技巧

    line-height:5px 2、如何让元素高度窗口相同 当前前端中CSS单位为vh,元素高度样式设置为height:100vh 3、修改输入框占位符样式 input::-webkit-input-placeholder....caret-color { width: 300px; padding: 10px; margin-top: 20px; border-radius: 10px; border:...默认情况下,type="number"输入类型末尾会出现一个小箭头,但有时需要将其去掉,可以使用以下样式: input { width: 300px; padding: 10px; margin-top...9、解决iOS滚动条卡住问题 在苹果手机上,滚动时元素经常会卡住。此时只有一行CSS支持弹性滚动。...body,html{ -webkit-overflow-scrolling: touch; } 10、自定义选定文本样式 您可以通过styles自定义选择文本颜色和样式。

    26330
    领券