# px em rem vw/vh 的区别
# 题目
px % em rem vw/vh 的区别
# px
像素,基本单位
# %
相对于父元素的尺寸。
如根据 position: absolute; 居中显示时,需要设置 left: 50%
.container {
with: 200px;
height: 200px;
position: relative;
}
.box {
with: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -50px;
margin-left: -50px;
}
# em
相对于当前元素的 font-size。首行缩进可以使用 text-indent: 2em。
# rem
rem = root em
相对于根元素的 font-size 。可以根据媒体查询,设置根元素的 font-size ,实现移动端适配。
@media only screen and (max-width: 374px) {
/* iphone5 或者更小的尺寸,以 iphone5 的宽度(320px)比例设置 font-size */
html {
font-size: 86px;
}
}
@media only screen and (min-width: 375px) and (max-width: 413px) {
/* iphone6/7/8 和 iphone x */
html {
font-size: 100px;
}
}
@media only screen and (min-width: 414px) {
/* iphone6p 或者更大的尺寸,以 iphone6p 的宽度(414px)比例设置 font-size */
html {
font-size: 110px;
}
}
# 应用
/**
* 首次加载成功时设置html跟标签的fontSize属性值;最大基准值为40px
*/
export const useRem = () => {
const MAX_FONT_SIZE = 40
// 当文档被解析成功时调用
window.addEventListener('DOMContentLoaded', () => {
const html = document.querySelector('html')
// 设置屏幕基准值的标准为 屏幕的宽度 / 10
const fontSize = window.innerWidth / 10
html.style.fontSize = Math.min(fontSize, MAX_FONT_SIZE) + 'px'
})
}
# vw/vh
- vw 屏幕宽度的 1%
- vh 屏幕高度的 1%
- vmin 两者最小值
- vmax 两者最大值