CSS单位px、em、rem、vh、vw、vmin、vmax

本文深入解析了CSS中的五种长度单位:px、em、rem、vh/vw和vmin/vmax,详细介绍了它们的计算方式及应用场景,帮助读者理解如何在网页布局中灵活运用这些单位。

1、px:相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

2、em:相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。 
看下面例子: 
HTML:

<body>body
<div class="div1">div1
    <div class="div2">div2
        <div class="div3">div3</div>
    </div>
</div>
</body>

CSS:

div{
    font-size:1.5em;
}

计算关系是这样的:

body的font-size是继承自跟元素html,html的尺寸是浏览器默认尺寸14px;

  • div1的font-size=1.5*14px = 21px;
  • div2的font-size=1.5*21px = 31.5px;
  • div3的font-size=1.5*31.5px = 47.25px;

如果手动设置div2的font-size为40px,div3的font-size应该为1.5*40px = 60px。

3、rem:相对长度单位。r’是“root”的缩写,相对于根元素<html>的字体大小。

例如还是上面的html代码,添加如下样式:

.div3{
    font-size:1.5rem;
}

此时div3的font-size = 1.5*14px = 1.5*html的font-size

4、vh and vw:相对于视口的高度和宽度,而不是父元素的(CSS百分比是相对于包含它的最近的父元素的高度和宽度)。

1vh 等于1/100的视口高度,1vw 等于1/100的视口宽度。

比如:浏览器高度900px,宽度为750px, 1 vh = 900px/100 = 9 px,1vw = 750px/100 = 7.5 px。

很容易实现与同屏幕等高的框:.slide { height: 100vh;} 
设置一个和屏幕同宽的标题,h1{font-size:100vw},那标题的字体大小就会自动根据浏览器的宽度进行缩放,以达到字体和viewport大小同步的效果。

5、vmin and vmax:关于视口高度和宽度两者的最小值或者最大值。

比如,浏览器的宽度设置为1200px,高度设置为800px, 1vmax = 1200/100px = 12px, 1vmin = 800/100px = 8px。如果宽度设置为600px,高度设置为1080px, 1vmin就等于6px, 1vmax则未10.8px。

有一个元素,你需要让它始终在屏幕上可见:

.box { 
    height: 100vmin; 
    width: 100vmin;
}


如果你要让这个元素始终铺满整个视口的可见区域:

.box { 
height: 100vmax; 
width: 100vmax;
}

 

--------------------- 
作者:逍遥不羁 
来源:优快云 
原文:https://blog.youkuaiyun.com/javaloveiphone/article/details/51120476 
版权声明:本文为博主原创文章,转载请附上博文链接!

CSS中有多种尺寸单位,每种单位都有其特定的用途和适用场景。以下是这些单位的详细区别和使用场景: ### px(像素) px 是一个绝对长度单位相对于显示器屏幕分辨率。1px 在大多数情况下表示一个像素点。由于其固定性,px 不适合用于需要高度自适应的设计,但在某些情况下仍然有用,例如需要精确控制元素大小时。 ### rpx(响应式像素) rpx 是微信小程序中使用的单位,可以根据屏幕宽度进行自适应。微信小程序规定屏幕的宽度为 750rpx,因此 1rpx 在不同设备上会根据屏幕宽度进行调整。这使得 rpx 在微信小程序开发中非常有用,因为它可以确保元素在不同设备上保持一致的视觉效果。 ### em em 是一个相对长度单位相对于当前元素的字体大小。1em 等于当前元素的字体大小。如果当前元素没有明确设置字体大小,则会继承父元素的字体大小。em 通常用于创建可缩放的布局,因为它可以根据用户的字体设置进行调整。 ### rem rem 是一个相对长度单位相对于根元素(即 `<html>` 元素)的字体大小。1rem 等于根元素的字体大小。与 em 不同,rem 不受当前元素或父元素的影响,因此它提供了一种更一致的方式来控制整个页面的布局。 ### vwvh vwvh 是视窗单位,分别表示视窗宽度和高度的百分比。1vw 等于视窗宽度的 1%,1vh 等于视窗高度的 1%。这些单位非常适合用于创建全屏或视窗相关的布局,因为它们可以根据视窗的大小动态调整。 ### vminvmax vminvmax 是视窗单位,分别表示视窗宽度和高度中的最小值和最大值的百分比。1vmin 等于视窗宽度和高度中较小的那个的 1%,而 1vmax 等于较大的那个的 1%。这些单位在需要根据视窗的最小或最大维度进行调整时非常有用。 ### 使用场景 - **px**:适用于需要精确控制元素大小的场景,例如图标或不需要缩放的元素。 - **rpx**:适用于微信小程序开发,特别是在需要根据屏幕宽度进行自适应的情况下。 - **em**:适用于需要根据当前元素或父元素的字体大小进行调整的场景,例如按钮或文本块。 - **rem**:适用于需要根据根元素的字体大小进行全局调整的场景,例如整个页面的布局。 - **vwvh**:适用于需要根据视窗大小进行动态调整的场景,例如全屏背景或视差滚动效果。 - **vminvmax**:适用于需要根据视窗的最小或最大维度进行调整的场景,例如响应式图像或视频。 ### 示例代码 以下是一个简单的示例,展示如何在 CSS 中使用这些单位: ```css /* 使用 px */ .box-px { width: 100px; height: 100px; } /* 使用 rpx(在微信小程序中) */ .box-rpx { width: 200rpx; height: 200rpx; } /* 使用 em */ .box-em { font-size: 16px; width: 6.25em; /* 100px / 16px = 6.25em */ height: 6.25em; } /* 使用 rem */ html { font-size: 16px; } .box-rem { width: 6.25rem; /* 100px / 16px = 6.25rem */ height: 6.25rem; } /* 使用 vwvh */ .box-vwvh { width: 20vw; /* 视窗宽度的 20% */ height: 20vh; /* 视窗高度的 20% */ } /* 使用 vminvmax */ .box-vminvmax { width: 10vmin; /* 视窗宽度和高度中较小的值的 10% */ height: 10vmax; /* 视窗宽度和高度中较大的值的 10% */ } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值