uniapp中height 100%和100vh的区别是什么?
在uniapp中,设置height:100%和height:100vh有什么区别?哪个更适合全屏布局?使用时需要注意哪些兼容性问题?
2 回复
height: 100%基于父元素高度,需父级有明确高度才生效;100vh直接取视口高度,不受父级影响。
在 UniApp 中,height: 100% 和 height: 100vh 的区别主要在于参考基准不同,具体如下:
1. height: 100%
- 参考基准:基于父元素的高度。如果父元素没有明确设置高度,
100%可能无效,导致元素高度为 0 或内容撑开。 - 适用场景:适用于嵌套布局,需要继承父容器高度时。
- 示例代码:
<template> <view class="parent"> <view class="child">子元素高度为父元素的100%</view> </view> </template> <style> .parent { height: 500px; /* 父元素必须设置高度 */ } .child { height: 100%; /* 继承父元素高度 */ } </style>
2. height: 100vh
- 参考基准:基于视口(Viewport)高度,1vh 等于视口高度的 1%。
100vh始终等于整个屏幕可见区域的高度。 - 适用场景:全屏布局,如启动页、弹窗覆盖层等,不受父元素高度影响。
- 示例代码:
<template> <view class="fullscreen">这个元素高度为整个视口高度</view> </template> <style> .fullscreen { height: 100vh; /* 直接使用视口高度 */ } </style>
关键区别总结:
- 100%:依赖父元素高度,需确保父链有明确高度定义。
- 100vh:直接依赖设备视口,更稳定,适合全屏效果。
根据布局需求选择:嵌套结构用 100%,全屏用 100vh。注意在部分浏览器或环境中,100vh 可能包含地址栏高度,需测试适配。

