前端设置宽高时height 100% 和 100vh 的区别


1.em

在做手机端的时候经常会用到的做字体的尺寸单位

说白了 em就相当于“倍”,比如设置当前的div的字体大小为1.5em,则当前的div的字体大小为:当前div继承的字体大小*1.5

但是当div进行嵌套的时候,em始终是按照当前div继承的字体大小来缩放,参照后面的例子。

2.rem

这里的r就是root的意思,意思是相对于根节点来进行缩放,当有嵌套关系的时候,嵌套关系的元素的字体大小始终按照根节点的字体大小进行缩放。

参照后面给的demo

3.vh

vh就是当前屏幕可见高度的1%,也就是说

height:100vh == height:100%;

但是有个好处是当元素没有内容时候,设置height:100%该元素不会被撑开,

但是设置height:100vh,该元素会被撑开屏幕高度一致。

4.vw

vw就是当前屏幕宽度的1%
补充一句,当设置width:100%,被设置元素的宽度是按照父元素的宽度来设置,但是100vw是相对于屏幕可见宽度来设置的,所以会出现50vw 比50%大的情况

<!DOCTYPE html>
<html lang="Zh-cn">
<head>
<meta charset="UTF-8">
<title>恭贺新春</title>
</head>
<style type="text/css" media="screen">
html{
font-size: 14px;
}
.em,
.em > .em-son,
.em > .em-son > .em-grandson {
font-size: 1.2em;
}
.rem,
.rem > .rem-son,
.rem > .rem-son > .rem-grandson {
font-size: 1.2rem;
}
.rem-box {
background: #d60b3b;
width:10rem;
height: 10rem;
color: #fff;
text-align: center;
line-height:5rem;
}
.vhvw-box {
background: #d60b3b;
width:50vw;
height: 50vh;
color: #fff;
text-align: center;
line-height:25vh;
}
</style>
<body>
<h1>em 继承父元素的字体大小,来变大或变小,多层嵌套字体变化</h1>
<div class="em">
<br>字体大小 1.2 * 14(父元素body) = 16px</br>
<div class="em-son">
<br>字体大小 1.2 * 16(父元素em) = 20px</br>
<div class="em-grandson">
<br>字体大小 1.2 * 20(父元素em-son) = 24px</br>
</div>
</div>
</div>
<br>
<h1>rem 继承根节点元素的字体大小,来变大或变小,多层嵌套字体不变化</h1>
<div class="rem">
<br>字体大小 1.2 * 14(根节点html) = 16px</br>
<div class="rem-son">
<br>字体大小 1.2 * 14(根节点html) = 16px</br>
<div class="rem-grandson">
<br>字体大小 1.2 * 14(根节点html) = 16px</br>
</div>
</div>
</div>
<br>
<h1>rem 也可作为固定长度单位设置宽高等</h1>
<div class="rem-box">
宽:14 * 10 = 140px<br>
高:14 * 10 = 140px
</div>
<br>
<h1>vh,vw 屏幕可见区域的高度,宽度的1%</h1>
<div class="vhvw-box">
<br>宽:屏幕宽度的50%</br>
<br>高:屏幕高度的50%</br>
</div>
</body>
</html>

注意

如果在vue项目中无法让div层占满全屏幕,可以试试在app.vue添加css

#app {
  height: 100%;
  width: 100%;
}

或者将100%修改为100vh,即可占满全屏幕。

最后

十分感谢原博主,原博客地址如下:
前端设置宽高时height:100% 和 100vh 的区别


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM