CSS单位px、rem、em、vw、vh的区别

目录

前言

零.视口介绍

一.px

二.em

三.rem【重要】

3.1rem介绍

3.2rem与em的区别

四.vw、vh、vmax、vmin

五.注意问题

5.1如何使1rem = 10px?

5.2如果父元素没有指定高度,那么子元素的百分比高度是多少?

5.3更多问题

前言

这几天在写个人网站,因为要适配移动端桌面端,因此了解到了一个新的布局:“响应式布局”(后面有时间会单独讲一下这个布局),现在我们来讨论一下CSS3中的单位,只有掌握好了这些单位,我们才可以熟练使用“响应式布局

为方便沟通,给出一个示例代码,后续关于单位的讨论都是基于示例代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>单位区别</title>
		<style>
			div {
				width: 100px;
				height: 100px;
			}
		</style>
	</head>
	<body style="display: flex;">
		<div style="background-color: aqua;"></div>
		<div style="background-color: red"></div>
		<div style="background-color: black;"></div>
	</body>
</html>

效果图

后续我们将使用“不同的单位修改<div>盒子的宽度”来展示效果

零.视口介绍

在学习单位之前,我们需要先了解什么是“视口

  • 视口是用户在网页上的可见区域
  • 视口随设备而已,一般移动端的视口会比桌面端视口更小
  • 视口是可见区域,不包括浏览器的UI、菜单栏等,即你正在浏览的文档的那一部分
  • 视口的大小是可变的,就比如在桌面端通过缩放/扩大窗口来修改视口大小

 下面介绍三个属性用来查询视口大小:

  1. window.innerWidth、window.innerHeight:用CSS像素单位表示的浏览器窗口的视口宽度\高度,包括垂直\水平滚动条
  2. window.outerWidth、window.outerHeight:包括了浏览器外边框的窗口宽度\长度
  3. element.clientWidth、element.clientWidth:对于内联元素或者没有CSS样式的元素为0,否则它是元素内部的宽度\长度(以像素为单位),该属性包括:“内边距”、“外边框”、“垂直滚动条”,不包括“边框”

 注意

  • 在实测中,innerWidth和outerWidth是相同的,但是outerHeight比innerHeight高100px,这是因为outerHieght的测量包括浏览器框架在内(地址栏和书签栏),而浏览器没有左右边框

一.px

px是“pixel”像素的缩写,相对长度单位,是接触HTML第一个学到的单位,也是网页设计的基本单位,像素px是“相对于显示器屏幕分辨率而言的

因此,使用像素px设置布局最大的问题就是:“在2.5k分辨率的屏幕上开发的界面,换到1K的屏幕上可能就会变得拥挤且杂乱

用我们上面的例子,三个<div>盒子的宽度都是100px,此时将页面“缩小\放大”,可以发现<div>盒子的大小是固定

(哪怕将网页缩小到这样了,大小也不会改变)

二.em

em相对长度单位,相对于当前对象内文本的字体尺寸(参考物是父元素的font-size)

(如果父元素的字体尺寸没有设置,则相对于浏览器的默认字体尺寸)

特点

  1. em的值不是固定的
  2. em会继承父级元素的字体大小

1em = 父元素的font-size大小

2em = 父元素的font-size大小 * 2

以此类推

例如下面的代码,我们指定html的“font-size”大小为20px;

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>单位区别</title>
		<style>
			html {
				font-size: 20px;
			}
			div {
				width: 1.5em;
				height: 100px;
			}
		</style>
	</head>
	<body style="display: flex;">
		<div style="background-color: aqua;"></div>
		<div style="background-color: red"></div>
		<div style="background-color: black;"></div>
	</body>
</html>

效果图

三.rem【重要

3.1rem介绍

remCSS3新增的一个相对单位rem是相对于HTML根元素字体大小(font-size)来计算的长度单位

如果没有设置html字体大小那么就会以浏览器默认字体大小(一般是16px)

优点:

只需要设置根目录字体的大小就可以把整个页面的比例调好,因此“rem”多用于响应式布局

3.2rem与em的区别

  • rem是相对于根元素(html)的字体大小,而em是相对于其父元素的字体大小

两者使用规则

  • 如果这个属性根据它的font-size进行测量,则使用em
  • 其它的一切事物属性均使用rem

四.vw、vh、vmax、vmin

vw、vh、vmax、vmin这四个单位都是基于视口

  • vw是相对于视口的宽度而定的,1vw相当于视口宽度的1/100
  • vh是相对于视口的高度而定的,1vh相当于视口高度的1/100
  • vmax是相对于视口高度和宽度(window.innerWidth和window.innerHeight)中的最大值
  • vmin是相对于视口高度和宽度(window.innerWidth和window.innerHeight)中的最小值

五.注意问题

5.1如何使1rem = 10px?

给html标签添加font-size为“62.5%”即可:

html {
    font-size:62.5%;
}

5.2如果父元素没有指定高度,那么子元素的百分比高度是多少?

会按照子元素的实际高度,设置百分比没有效果

5.3更多问题

如果后面有更多常见问题,作者将会在这里实时更新,欢迎读者朋友们关注!

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是洋洋a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值