CSS中的视口单位听起来很棒。 如果要设置元素的样式以占据整个屏幕的高度,则可以设置height: 100vh,您拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小! 可悲的是,事实并非如此。 100vh在移动浏览器中以微妙但基本的方式被破坏,这使其几乎无用。 最好避免100vh ,而是依靠javascript设置高度以获得完整的视口体验。

核心问题是移动浏览器(我正在为您浏览,Chrome和Safari)具有“帮助”功能,其中地址栏有时可见,有时隐藏,从而改变了视口的可见大小。 这些浏览器没有将100vh高度调整为视口高度变化时屏幕的可见部分,而是将100vh设置为浏览器的高度,并隐藏了地址栏。 结果是,当地址栏可见时,屏幕的底部将被切除。

如下所示:

当显示地址栏时,由于移动浏览器错误地将100vh设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。 在上图中,应隐藏在屏幕底部的按钮。 更糟糕的是,当用户首次访问移动设备上的网站时,地址栏将在顶部可见,因此默认的体验是破碎的体验。

更好的解决方案:window.innerHeight

解决此问题的一种方法是依靠javascript而不是CSS。 页面加载时,将高度设置为window.innerHeight可以将高度正确设置为窗口的可见部分。 如果地址栏可见,则window.innerHeight将为全屏的高度。 如果地址栏是隐藏的,则window.innerHeight将是屏幕上可见部分的高度,这正是您所期望的。

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

遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备上的局限性,最好避免使用它。

我的博客:http://caibaojian.com

公众号:http://t.cn/AiuNZVZG,公众号回复前端,加入开发群

掘金小册8折优惠:http://caibaojian.com/goods

在移动前端上避免使用100vh单位相关推荐

  1. vue + elementUI upload组件,前端上传视频到阿里云视频点播

    1.视频上传阿里云,首先引用阿里云的sdk,放在所需界面中引用 import '@/utils/aliyun-oss-sdk-6.13.0.min.js';import '@/utils/aliyun ...

  2. html5封装图片,简单封装前端上传文件/图片

    前言 最近项目会一直用到各种类型的上传文件的功能, 所以就基于elment-ui简单的做了一个封装, 比较好用 正文 引入 import TestUpload from '../components/ ...

  3. matplotlib 给坐标轴上的数字加单位

    matplotlib 给坐标轴上的数字加单位 示例图 代码实现 import matplotlib.pyplot as plt import matplotlib.ticker as mtickerp ...

  4. 关于前端上传文件到后台,文件大小超出限制,导致上传失败的解决办法。

    文章出处:Jiangkuobo,微信:jkb_267460 文章目录 前言 一.使用elementPlus上传图片,出现的问题. 二.验证猜想 1.验证方式: 2.测试结果: 3.我的猜想与验证 三. ...

  5. 前端上传视频至阿里云

    1.开通阿里云服务,获取userId 官方文档地址:https://help.aliyun.com/document_detail/52204.html?spm=a2c4g.11186623.6.91 ...

  6. 前端上传大文件怎么处理

    前端上传大文件怎么处理 - 掘金 背景 当我们在做文件的导入功能的时候,如果导入的文件过大,可能会导所需要的时间够长,且失败后需要重新上传,我们需要前后端结合的方式解决这个问题 思路 我们需要做几件事 ...

  7. 关于前端上传文件到七牛云的一些笔记

    关于前端上传文件到七牛云的一些心得 前言 申请账户 具体步骤 算了 小技巧 七牛云没有监控上传进度和上传错误的 API ?(JS SDK) React 更新 state 中的数组不能触发动画效果? 前 ...

  8. 设置echarts图表上Y轴的单位

    设置echarts图表上Y轴的单位 代码如下: yAxis: [{type: 'value',axisLabel: {show: true,interval: 'auto',formatter: '{ ...

  9. 关于使用jQuery前端上传文件

    关于使用jQuery前端上传文件 我们都知道 html中file类型的input可以直接读取本地的文件; 如果使用form表单的话,那么action = url 这就会上传完文件会刷新页面,返回值就会 ...

最新文章

  1. Nokia是否还有未来 - 小议诺基亚和微软的战略布局
  2. C++引用入门教程(一)
  3. 三层聚合实验的注意事项
  4. SQL实战篇:SQL行列转换及真题
  5. 2021凯络趋势报告
  6. JReBel激活码注册申请--方便Java开发中使用Jrebel热部署
  7. 剑指offer题目系列一
  8. 【云计算学习教程】云计算虚拟化技术和容器技术详解
  9. -1 转换成二进制数是多少,负数左移右移。
  10. 为什么五笔输入法打字那么快,现在使用的人却越来越少了?
  11. java 奇数trun_N26-博客作业-week15
  12. mysql今天日期_MySQL获取今天的日期
  13. 多可文档管理系统_您的框架有多可扩展性?
  14. 【LaTeX】子图和图片并排
  15. android热更新机制
  16. ORACLE删除归档日志和ORA-00257问题
  17. 【拆书】《深度工作》教你时间管理
  18. 如何从零设计一种物联网组网协议
  19. 【 安信可模组TG-12F/TG-01M②】搭建Linux开发环境,二次开发直连阿里飞燕/天猫精灵平台,实现天猫精灵语音控制
  20. 2022 【华为】面试真题

热门文章

  1. 下载 GitHub的代码:git(windows)
  2. 医疗系统流程软件测试用例,如何写全流程的测试用例 - rose8561900的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  3. 计算任意年份之间的天数
  4. Java入门教程:最全面最简单的Java基础教程
  5. Avazu_ctr_prediction 数据集之Avazu_x4.zip介绍
  6. Rockchip Android平台挂在samba共享文件夹
  7. Isight软件调用matlab
  8. 解决方案模板(标题立问题简述)
  9. Nexus私服安装以及使用教程
  10. 工作了,才知道......