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

100vh不会使柱子高度达到100%

基础概念

vh 是一个相对单位,表示视口高度的百分比。100vh 意味着元素的高度等于视口高度的100%。然而,在某些情况下,100vh 并不会使柱子高度达到100%。

原因

  1. 浏览器工具栏和地址栏:现代浏览器通常有可调整大小的工具栏和地址栏,这些元素会占用视口的一部分高度,导致实际可用的视口高度小于100%。
  2. 滚动条:如果页面有滚动条,滚动条也会占用一部分视口高度。
  3. 其他UI元素:页面上的其他固定或绝对定位的UI元素可能会覆盖或影响100vh的计算。

解决方法

1. 使用 calc() 函数

通过 calc() 函数减去浏览器工具栏和地址栏的高度,可以更准确地设置元素高度。

代码语言:txt
复制
.bar {
  height: calc(100vh - 50px); /* 假设工具栏和地址栏高度为50px */
}

2. 使用 env()constant() 函数(适用于Safari)

Safari浏览器提供了 env()constant() 函数来处理安全区域。

代码语言:txt
复制
.bar {
  height: calc(env(safe-area-inset-top) + env(safe-area-inset-bottom) + 100vh);
}

3. 使用 JavaScript 动态计算高度

通过JavaScript动态获取视口高度,并减去其他UI元素的高度。

代码语言:txt
复制
const bar = document.querySelector('.bar');
const viewportHeight = window.innerHeight;
const toolbarHeight = 50; // 假设工具栏高度为50px
bar.style.height = (viewportHeight - toolbarHeight) + 'px';

应用场景

100vh 通常用于创建全屏高度的元素,如全屏背景、导航栏、侧边栏等。通过上述方法,可以确保这些元素在不同浏览器和设备上都能正确显示。

参考链接

希望这些信息对你有所帮助!

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

相关·内容

解决height:100vh超出屏幕高度的问题

( 只看有关的代码哦 ) // 此处使用stylus书写样式 .evaluation // 最外边的div width 100% height 100vh // 高度为屏幕的高度 padding-top...color #444444 font-size 0.32rem border-bottom 1px solid #cccccc 因为内容并没有占满整个屏幕 , 所以设置 height : 100vh....evaluation // 最外边的div width 100% min-height: calc(100vh - 0.9rem) //这个页面只有头部,所以将头部的高度减去 padding-top...color #444444 font-size 0.32rem border-bottom 1px solid #cccccc 决定性代码: min-height: calc(100vh...– 0.9rem); 注: 100vh 减去的可以是任意像素单位(px、rpx、em等), 此处运算符左右要有空格哟~~ 遇到这个问题的小哥哥和小姐姐可以试试哦 , 看有没有解决呀!

4.1K10

CSS | 视差滚动 | 笔记

) height:100% 铺满父容器的高度 height:100vh 铺满屏幕(viewport)的高度 "100vh" 是指大小为 "100" 单位为 "vh" 的一个相对 长度值。...vh 是 css 中的一个相对长度单位, 是相对于视窗的高度, 100vh 就是指 元素的高度等于当前浏览器的视窗高度, 即浏览器内部的可视区域的高度大小。...最好避免 100vh, 而是依赖 JavaScript 来设置高度,以获得完整的视口体验。...这些浏览器没有将 100vh 的高度调整为视口高度变化时屏幕的可见部分,而是将 100vh 设置为隐藏地址栏的浏览器高度。...结果是,当地址栏可见时,屏幕的底部部分将被切断,从而破坏了100vh的初衷。 如下所示: 当地址栏可见时,由于移动浏览器不正确地将100vh设置为屏幕高度而没有显示地址栏, 因此屏幕底部被切断。

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

    vh单位定义为视窗高度的百分比,那岂不是esay? body{ height:100vh; } 搞定,大功告成!...浏览器中100vh这个方案都是不完美的,都出现了滚动条,并不能达到我们预期的可视区域的满屏高度。...作为一个cv高手,借助搜索引擎我们了解到,Safari把网址栏与工具栏算进了100vh中,是第一个通过选择根据屏幕的最大高度为vh定义固定值来更新其实现的移动浏览器之一,而后Google浏览器也效仿它。...滚动时可见区域会动态变化,如果我们相应地更新CSS视口高度,则需要在滚动过程中更新布局。为了达到更好的用户体验,使用较大的视图尺寸是最好的折衷方案。...body{ height:100vh; height:calc(var(--vh,1vh)*100); } 提供备用属性,像这样就OK了,接下来我们来设置自定义变量 //获取视口高度

    1.2K20

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

    图片 为什么100vh问题会发生在移动设备上? 我对这个问题进行了一番调查,发现了其中的原因。简短的答案是,浏览器的工具栏高度没有被考虑在内。...如何修复移动设备上的100vh问题? 第一个建议是尽量少用 vh。例如,在上面的代码中,你可以使用一个 sticky 按钮,避免使用vh单位。...仅使用 CSS 在移动设备上修复 100VH 问题 时,使用 vh 的目的是为了简单地创建与视口高度相等的部分。例如,当你在建立登陆页面时,这很常见。...图片 用 fill-available 修复 100vh 的问题确实很直接,但在调查这个解决方案时,也遇到过一些问题。 1. HTML类型声明问题 页面上有 声明,会使 fill-available 在 Chrome 浏览器上无法正常工作。

    1.3K40

    11. 盛最多水的容器

    leetcode有一点好,不用写很多空值判断啥玩意的,这里n值和高度都是有效值,只考虑我们的思路就好了。 思路: 双指针法,每次保留较大值,知道左右边界相交判断完全部的值!...首先定义俩指针分别指向最左和最右的那个柱子。那么水的宽度是两根柱子之间的距离 d = 8d=8;水的高度取决于两根柱子之间较短的那个,即左边柱子的高度 h = 3h=3。...那么如果选择固定一根柱子,另外一根变化,水的面积会有什么变化吗?稍加思考可得: 当前柱子是最两侧的柱子,水的宽度 dd 为最大,其他的组合,水的宽度都比这个小。 左边柱子较短,决定了水的高度为 3。...如果移动左边的柱子,新的水面高度不确定,一定不会超过右边的柱子高度 7。 如果移动右边的柱子,新的水面高度一定不会超过左边的柱子高度 3,也就是不会超过现在的水面高度。...因此我们可以发现,我们知道较短的一根柱子固定后,长柱向内移动必然会使值更小,因此我们可以丢弃短柱,去探索长柱留下的情况下有没有最大值。

    21120

    春眠不觉晓,vh、vw、vmin、vmax 知多少

    vw and vh 1vw 等于1/100的视口宽度 (Viewport Width) 1vh 等于1/100的视口高度 (Viewport Height) 综上,一个页面而言,它的视窗的高度就是 100vh...,宽度就是 100vw 。...但是如果你就想用视口(viewpoint)的宽度或者高度,而不是父元素的,那该肿么办? 这就是 vh 和 vw 单位为我们提供的。 1vh 等于1/100的视口高度。...栗子:浏览器高度900px, 1 vh = 900px/100 = 9 px。同理,如果视口宽度为750, 1vw = 750px/100 = 7.5 px。 可以想象到的,他们有很多很多的用途。....slide { height: 100vh; } 假设你要来一个和屏幕同宽的标题,你只要设置这个标题的font-size的单位为vw,那标题的字体大小就会自动根据浏览器的宽度进行缩放,以达到字体和

    1.1K20

    双指针的妙用,巧解一道高频面试题:接雨水

    因为,位置 i 能达到的水柱高度和其左边的最高柱子、右边的最高柱子有关,我们分别称这两个柱子高度为l_max和r_max;位置 i 最大的水柱高度就是min(l_max, r_max)。...我们直接把结果都缓存下来,别傻不拉几的每次都遍历,这时间复杂度不就降下来了嘛。...我们开两个数组r_max和l_max充当备忘录,l_max[i]表示位置 i 左边最高的柱子高度,r_max[i]表示位置 i 右边最高的柱子高度。预先把这两个数组计算好,避免重复计算: ?...很容易理解,l_max是height[0..left]中最高柱子的高度,r_max是height[right..end]的最高柱子的高度。 明白了这一点,直接看解法: ?...但是双指针解法中,l_max和r_max代表的是height[0..left]和height[right..end]的最高柱子高度。

    1.6K31

    详解一道高频面试题:接雨水

    因为,位置 i 能达到的水柱高度和其左边的最高柱子、右边的最高柱子有关,我们分别称这两个柱子高度为l_max和r_max;位置 i 最大的水柱高度就是min(l_max, r_max)。...我们直接把结果都缓存下来,别傻不拉几的每次都遍历,这时间复杂度不就降下来了嘛。...我们开两个数组r_max和l_max充当备忘录,l_max[i]表示位置 i 左边最高的柱子高度,r_max[i]表示位置 i 右边最高的柱子高度。预先把这两个数组计算好,避免重复计算: ?...很容易理解,l_max是height[0..left]中最高柱子的高度,r_max是height[right..end]的最高柱子的高度。 明白了这一点,直接看解法: ?...但是双指针解法中,l_max和r_max代表的是height[0..left]和height[right..end]的最高柱子高度。

    1.5K20

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

    100vh带来的问题 在CSS中,视口单位(Viewport units)听起来不错。...如果要设置一个元素的样式使它占据整个屏幕的高度,那么你可以设置height: 100vh,这样你就拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可惜的是,事实并非如此。...100vh在移动浏览器中以一种微妙但基本的方式被破坏,使其几乎无用。最好避免使用100vh,而应该通过javascript设置高度的方式来获得完整的视口体验。...当视口高度变化时,这些浏览器没有将100vh的高度调整为屏幕的可见部分的高度,而是将100vh设置为隐藏了地址栏的浏览器的高度(其实就是100vh高度没变,但是地址栏那块把内容顶出去了一块)。...结果导致:当地址栏可见时,屏幕的底部将被切断,从而破坏了开始时100vh的目的。

    1.6K30

    vh 存在问题?试试动态视口单位之 dvh、svh、lvh

    正常而言: 1vw 等于1/100的视口宽度 (Viewport Width) 1vh 等于1/100的视口高度 (Viewport Height) vmin — vmin 的值是当前 vw 和 vh...100vh 不总是等于一屏幕的高度。有的时候,100vh 高度会出现滚动条。...根因在于: 很多浏览器,在计算 100vh 的高度的时候,会把地址栏等相关控件的高度计算在内2 同时,很多时候,由于会弹出软键盘等操作,在弹出的过程中,100vh 的计算值并不会实时发生变化!...这也就变相导致了许多基于 100vh 想实现的效果无形中会产生很多问题。...假期在群里看到了这样一张很有意思的图: 可以预见,未来 CSS 将朝着越来越复杂、功能越来越强大继续发展,诸多新特性层出不穷。可能不再是很多人之前眼中的比较简单的一门语言。

    2K20

    LeetCode 11. 盛最多水的容器

    希望让我们求选哪两条竖线会使得我们倒的水的总面积最大。...题目输入是一个数组,下标的话就是它的横坐标,数组的值就是它的高度,相当于就是告诉了我们很多柱子的位置和高度,然后问我们怎么选可以使得总面积最大。...然后每次比较一下这两个指针指向的柱子的高度:如果说第二个指针指向的高度比较低的话,那么我们就把第二个指针往前移动一位;如果说第一个指针指向的高度比较低的话那么我们就把第一个指针往后移动一位。...假设最优解是某两根柱子,我们两根指针最开始是在这两个柱子的两侧,每次是把某一个指针向中间靠拢一点,那么必然会出现什么情况呢?...因为对于任意一个最优解,我只要有一边达到边界,那么另外一边一定会向这个边界不断靠拢,这样的话就可以证明出来我们一定会把这个边界选到。 那么我们来看一下为什么这样是正确的?

    40700

    移动端避免使用100vh

    如果要设置元素的样式以占据整个屏幕的高度,则可以设置height: 100vh,您拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可悲的是,事实并非如此。...100vh在移动浏览器中以微妙但基本的方式被破坏,这使其几乎无用。最好避免100vh ,而是依靠javascript设置高度以获得完整的视口体验。...这些浏览器没有将100vh高度调整为视口高度变化时屏幕的可见部分,而是将100vh设置为浏览器的高度,并隐藏了地址栏。结果是,当地址栏可见时,屏幕的底部将被切除。...如下所示: 当显示地址栏时,由于移动浏览器错误地将100vh设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。在上图中,应隐藏在屏幕底部的按钮。...遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备上的局限性,最好避免使用它。

    2K20

    在移动端避免使用100vh「建议收藏」

    在移动端避免使用100vh CSS中的Viewport单元听起来很棒。如果你想将一个元素设置成全屏高度,你可以设置高度:100vh,这样你就有了一个完美的全屏元素,它会随着视口的改变而改变大小!...100vh在不同的浏览器的实现方式上也有一点微妙的变化,这使得它几乎毫无用处。最好避免100vh,而是依赖javascript来设置高度,以获得完整的视口体验。...这些浏览器没有将100vh的高度调整为视口高度变化时屏幕的可见部分,而是将100vh设置为隐藏地址栏的浏览器高度。结果是,当地址栏可见时,屏幕的底部部分将被切断,从而破坏了100vh的初衷。...如下所示: 当地址栏可见时,由于移动浏览器不正确地将100vh设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。在上图中,应该在屏幕底部的按钮被隐藏了。...遗憾的是,仍然没有一种简单的方法可以让一个元素在不依赖javascript的情况下占据整个视口高度。height: 100vh是如此接近伟大,但考虑到它在移动设备上的局限性,最好避免它。

    2.7K21

    移动端避免使用100vh

    如果要设置元素的样式以占据整个屏幕的高度,则可以设置height: 100vh,您拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可悲的是,事实并非如此。...100vh在移动浏览器中以微妙但基本的方式被破坏,这使其几乎无用。最好避免100vh ,而是依靠javascript设置高度以获得完整的视口体验。...这些浏览器没有将100vh高度调整为视口高度变化时屏幕的可见部分,而是将100vh设置为浏览器的高度,并隐藏了地址栏。结果是,当地址栏可见时,屏幕的底部将被切除。 如下所示: ?...当显示地址栏时,由于移动浏览器错误地将100vh设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。在上图中,应隐藏在屏幕底部的按钮。...遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备上的局限性,最好避免使用它。

    1.9K20

    手把手搞懂接雨水问题的多种解法

    因为,位置i能达到的水柱高度和其左边的最高柱子、右边的最高柱子有关,我们分别称这两个柱子高度为l_max和r_max;位置 i 最大的水柱高度就是min(l_max, r_max)。...我们直接把结果都提前计算出来,别傻不拉几的每次都遍历,这时间复杂度不就降下来了嘛。...我们开两个数组r_max和l_max充当备忘录,l_max[i]表示位置i左边最高的柱子高度,r_max[i]表示位置i右边最高的柱子高度。...很容易理解,l_max是height[0..left]中最高柱子的高度,r_max是height[right..n-1]的最高柱子的高度。...但是细心的读者可能会发现次解法还是有点细节差异: 之前的备忘录解法,l_max[i]和r_max[i]分别代表height[0..i]和height[i..n-1]的最高柱子高度。

    1.3K20

    如何使用SVG动画来制作游戏

    同样的,你也可以通过在How to Play上设置 justify-content: space-around来达到同样的目的.我使用flex: 1 的原因是,我想让中间的一列排在屏幕的最中央。 ?...界面有一个柱子容器和一个球的容器。我不想让球是绝对定位的,因为我通过css让球刚好坐在柱子上,这样即使我改变柱子的高度,我也不需要改动其他代码就可以让球恰好落到柱子上。...我们也许会使用到floats, width: 33.33333% ,position: absolute 和 bottom: 0,我的天啊!...看下这款游戏在不同尺寸的屏幕上达到了完美的效果!如同我说的,我仅仅是使用了 CSS transform, 这样做具有它独特的挑战性。...因此,我们需要让整个游戏的容器以相同的尺寸放大,这样当缩放界面的时候,容器可以100%的占据屏幕的尺寸。

    2.1K30

    safari对100vh的兼容问题

    需求:在以下的布局要求下,利用flex布局来实现,但需要在最外层给一个固定高度来控制页面高度及可滑动区域的可视高度 很自然的利用100vh来控制最外层的高度,但测试过程中,发现safari浏览器中,页面的高度出现了偏差...,比屏幕的高度还要高出一部分,出现了双层滚动条。...经研究,发现safari的100vh是包含地址栏和功能列的,而其它浏览器100vh才是用户浏览器真正的可见区域(见下图) 解决方案 通过innerHeight重新定义一个变量代替vh safariHacks...document.querySelector('.wrap').style.setProperty('--vh', windowsVH + 'px'); }); } 在mounted内调用该方法 height: 100vh...; /*給 Safari 以外的瀏覽器讀取*/ height: calc(var(--vh, 1vh) * 100); 注意–vh要写在100vh下面。。。

    2K20
    领券