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

避免在移动端页面中使用100vh100vh带来的问题在CSS中,视口单位(Viewportunits)听起来不错。如果要设置一个元素的样式使它占据整个屏幕的高度,那么你可以设置height:100vh,这样你就拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可惜的是,事实并非如此。100vh在移动浏览器中以一种微妙但基本的方式被破坏,使其几乎无用。最好避免使用100vh,而应该通过javascript设置高度的方…

大家好,又见面了,我是你们的朋友全栈君。

100vh带来的问题

在CSS中,视口单位(Viewport units)听起来不错。如果要设置一个元素的样式使它占据整个屏幕的高度,那么你可以设置height: 100vh,这样你就拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可惜的是,事实并非如此。100vh移动浏览器中以一种微妙但基本的方式被破坏,使其几乎无用。最好避免使用100vh,而应该通过javascript设置高度的方式来获得完整的视口体验。

核心问题是移动浏览器(说的就是你,Chrome和Safari)具有“有用”功能:地址栏有时可见,有时隐藏,从而改变了视口的可见大小。当视口高度变化时,这些浏览器没有将100vh的高度调整为屏幕的可见部分的高度,而是将100vh设置为隐藏了地址栏的浏览器的高度(其实就是100vh高度没变,但是地址栏那块把内容顶出去了一块)。结果导致:当地址栏可见时,屏幕的底部将被切断,从而破坏了开始时100vh的目的。

如下所示:
100vh

一个更好的解决方法:window.innerHeight

解决该问题的一种方法是依靠JavaScript而不是CSS。在页面加载时,将高度设置为window.innerHeight可以将高度正确设置为窗口的可见部分高度。 如果地址栏可见,则window.innerHeight将为全屏的高度。 如果地址栏处于隐藏状态,则window.innerHeight就是你期望的只是屏幕可见部分的高度。

在Wordsheet.io上学习时,你可以看到这一点。例如,尝试在移动浏览器上打开wordsheet.io/demo/V3Y。无论地址栏是否可见,屏幕都将是视口的高度。此外,在页面首次加载时将高度固定为适当的大小,可以防止在使用该网站的过程中地址栏隐藏,从而带来尴尬的屏幕调整大小体验。

遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。100vh是如此接近伟大(greatness),但考虑到它在移动设备上的局限性,最好避免使用它。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133525.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android bioset 进程,kthrotlds(WatchDogs变种)查杀方法「建议收藏」

    android bioset 进程,kthrotlds(WatchDogs变种)查杀方法「建议收藏」virus.win32.parite.H病毒的查杀方法virus.win32.parite.H病毒的查杀方法昨天电脑中了virus.win32.parite.H病毒,搞了2个多小时最终搞定了.以下记录下我的解决方法.第一步:下载Win32.Parit…Linux系统木马后门查杀方法详解木马和后门的查杀是系统管理员一项长期需…

    2022年7月25日
    13
  • linux 命令—笔记

    linux 命令—笔记

    2022年3月13日
    29
  • 如何下载pycharm以前的版本_pycharm怎么下载包

    如何下载pycharm以前的版本_pycharm怎么下载包地址:https://www.jetbrains.com/pycharm/download/previous.html点击进去就能看到各个版本的下载链接。————————————————版权声明:本文为CSDN博主「lyj156」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/lyj156/article/details/95887590…

    2022年8月25日
    3
  • Odin Inspector 系列教程 — 常见问题解答(FAQ)

    Odin Inspector 系列教程 — 常见问题解答(FAQ)1.Odin多达约90种不同的特性,有可以快速预览每种特性的效果吗?可以选择Tools/OdinInspector/AttributeOverview进行快速预览,如果需要更详细的说明,可以查看主页革命性Unity编辑器扩展工具—OdinInspector系列教程,配合示例工程服用效果更佳2.可以禁用指定的Odin绘制特性吗?Odin…

    2022年7月21日
    15
  • 多栏式和三栏式的区别_找出在2013年有交易发生的账户列表

    多栏式和三栏式的区别_找出在2013年有交易发生的账户列表画DBGRID,DBGRIDEH中文帐簿金额栏

    2022年4月21日
    36
  • 三次握手几个rtt_tcp三次握手详细过程

    三次握手几个rtt_tcp三次握手详细过程一、RST包、本人学习后总结:RST包用于强制关闭TCP链接。TCP连接关闭的正常方法是四次握手。但四次握手不是关闭TCP连接的唯一方法.有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST(Reset)包将被发送.注意,由于RST包不是TCP连接中的必须部分,可以只发送RST包(即不带ACK标记).但在正常的TCP连接中RST包可以带ACK确认标记。 二、三次握手Th…

    2022年10月1日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号