safari对100vh的兼容问题[通俗易懂]

safari对100vh的兼容问题[通俗易懂]需求:在以下的布局要求下,利用flex布局来实现,但需要在最外层给一个固定高度来控制页面高度及可滑动区域的可视高度很自然的利用100vh来控制最外层的高度,但测试过程中,发现safari浏览器中,页面的高度出现了偏差,比屏幕的高度还要高出一部分,出现了双层滚动条。经研究,发现safari的100vh是包含地址栏和功能列的,而其它浏览器100vh才是用户浏览器真正的可见区域(见下图)解决方案通过innerHeight重新定义一个变量代替vhsafariHacks(){letwin

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

需求:在以下的布局要求下,利用flex布局来实现,但需要在最外层给一个固定高度来控制页面高度及可滑动区域的可视高度

在这里插入图片描述

很自然的利用100vh来控制最外层的高度,但测试过程中,发现safari浏览器中,页面的高度出现了偏差,比屏幕的高度还要高出一部分,出现了双层滚动条。

经研究,发现safari的100vh是包含地址栏和功能列的,而其它浏览器100vh才是用户浏览器真正的可见区域(见下图)
在这里插入图片描述

解决方案

通过innerHeight重新定义一个变量代替vh

safariHacks() {
    let windowsVH = window.innerHeight / 100;
    document.querySelector('.wrap').style.setProperty('--vh', windowsVH + 'px');
    window.addEventListener('resize', function() {
        document.querySelector('.wrap').style.setProperty('--vh', windowsVH + 'px');
    });
}

在mounted内调用该方法
height: 100vh; /*給 Safari 以外的瀏覽器讀取*/
height: calc(var(--vh, 1vh) * 100);

注意–vh要写在100vh下面。。。

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

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

(0)
上一篇 2022年5月29日 下午12:16
下一篇 2022年5月29日 下午12:36


相关推荐

  • DDoS 攻击防御方法

    DDoS 攻击防御方法网络层 DDoS 防御限制单 IP 请求频率 网络架构上做好优化 采用负载均衡分流 防火墙等安全设备上设置禁止 ICMP 包等 通过 DDoS 硬件防火墙的数据包规则过滤 数据流指纹检测过滤 及数据包内容定制过滤等技术对异常流量进行清洗过滤 采用 ISP 近源清洗 使用电信运营商提供的近源清洗和流量压制 避免全站服务对所有用户彻底无法访问 这是对超过自身带宽储备和自身 DDoS 防御能力之外超大流量的补充性缓解措施 应用层 DDoS 防御优化操作系统的 TCP IP 栈 应用服务器严格限制单

    2026年3月18日
    2
  • linux查看ip命令

    linux查看ip命令参考文章 https www linuxidc com Linux 2017 10 147449 htm 摘要 1 ifconfig 查看 ip2 vi 编辑 etc sysconfig network scripts 下的配置文件 设置动态分配 IP 有效一 查看 ip 命令 ifconfig ipadd 命令也行 推荐使用这个命令 如果没有红框中的 inet 图一查看 ip 则需要编辑网络脚本 1 进入 network scripts 目录 路径通常为 cd etc sysconfig ne

    2026年3月19日
    2
  • 走进音视频的世界——Matroska封装格式的介绍(二)「建议收藏」

    走进音视频的世界——Matroska封装格式的介绍(二)「建议收藏」Matroska封装格式非常灵活、兼容性好,既适用于本地文件存储又可以进行实时流传输。本篇文章主要探讨Matroska的编解码器映射,如何封装视频流、音频流、字幕流。如果要Matroska的介绍、功能和基本结构,请查看上一篇文章:走进音视频的世界——Matroska封装格式的介绍(一)。一、Matroska流Matroska有两种传输流:文件访问(存储)和实时流传输(直播)。1.文件存储Matroska是一种容器,支持把多媒体流封装成为文件,存储于本地。Matroska的开销很小,非常适合

    2025年11月20日
    5
  • JDK1.8新特性CompletableFuture总结

    CompletableFuture这个completableFuture是JDK1.8版本新引入的类。下面是这个类。实现了俩接口。本身是个class。这个是Future的实现类。使用completionStage接口去支持完成时触发的函数和操作。一个completetableFuture就代表了一个任务。他能用Future的方法。还能做一些之前说的executorService配合fu…

    2022年4月4日
    157
  • 关于堆栈区别的总结

    关于堆栈区别的总结堆栈的区别管理方式不同 栈 栈区空间由操作系统分配与释放 用于存储局部变量 函数参数等 堆 堆区空间由程序员自主分配与释放 空间大小不同 栈 栈的大小是固定的 不同的操作系统也不同 window 一般为 2M linux 下为 10M 堆 理论上可以分配虚拟地址空间大小的内存 分配效率不同 栈分配空间的效率更高 栈的擦偶哦在硬件层提供支持 分配专门的寄存器来存储栈的地址 压栈出

    2025年8月22日
    5
  • 如何查看redis占用内存大小

    如何查看redis占用内存大小

    2021年11月3日
    45

发表回复

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

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