说说em/px/rem/vh/vw区别?

简介: 说说em/px/rem/vh/vw区别?

6c79f1a8ec1d698580fe277eb040f1d6.png

一、介绍


传统的项目开发中,我们只会用到px、%、em这几个单位,它可以适用于大部分的项目开发,且拥有比较良好的兼容性。


从CSS3开始,浏览器对计量单位的支持又提升到了另外一个境界,新增了rem、vh、vw、vm等一些新的计量单位。


利用这些新的单位开发出比较良好的响应式页面,适应多种不同分辨率的终端,包括移动设备等。


二、单位


在css单位中,可以分为长度单位、绝对单位,如下表所指示


CSS单位

相对长度单位 em、ex、ch、rem、vw、vh、vmin、vmax、%

绝对长度单位 cm、mm、in、px、pt、pc

这里我们主要讲述px、em、rem、vh、vw


1、px


px,表示像素,所谓像素就是呈现在我们显示器上的一个个小点,每个像素点都是大小等同的,所以像素为计量单位被分在了绝对长度单位中


有些人会把px认为是相对长度,原因在于在移动端中存在设备像素比,px实际显示的大小是不确定的


这里之所以认为px为绝对单位,在于px的大小和元素的其他属性无关


2、em


em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸(1em = 16px)


为了简化 font-size 的换算,我们需要在css中的 body 选择器中声明font-size= 62.5%,这就使 em 值变为 16px*62.5% = 10px


这样 12px = 1.2em, 10px = 1em, 也就是说只需要将你的原来的px 数值除以 10,然后换上 em作为单位就行了


特点:


em 的值并不是固定的

em 会继承父级元素的字体大小

em 是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸

任意浏览器的默认字体高都是 16px


举个例子

<div class="big">
    我是14px=1.4rem<div class="small">我是12px=1.2rem</div>
</div>
样式为
<style>
    html {font-size: 10px;  } /*  公式16px*62.5%=10px  */  
    .big{font-size: 1.4rem}
    .small{font-size: 1.2rem}
</style>


这时候.big元素的font-size为14px,而.small元素的font-size为12px


3、rem


rem,相对单位,相对的只是HTML根元素font-size的值


同理,如果想要简化font-size的转化,我们可以在根元素html中加入font-size: 62.5%


html {font-size: 62.5%;  } /*  公式16px*62.5%=10px  */


这样页面中1rem=10px、1.2rem=12px、1.4rem=14px、1.6rem=16px;使得视觉、使用、书写都得到了极大的帮助


特点:


rem单位可谓集相对大小和绝对大小的优点于一身

和em不同的是rem总是相对于根元素,而不像em一样使用级联的方式来计算尺寸


4、vh,vw


vw ,就是根据窗口的宽度,分成100等份,100vw就表示满宽,50vw就表示一半宽。(vw 始终是针对窗口的宽),同理,vh则为窗口的高度


这里的窗口分成几种情况:


在桌面端,指的是浏览器的可视区域


移动端指的就是布局视口


像vw、vh,比较容易混淆的一个单位是%,不过百分比宽泛的讲是相对于父元素:


对于普通定位元素就是我们理解的父元素

对于position: absolute;的元素是相对于已定位的父元素

对于position: fixed;的元素是相对于 ViewPort(可视窗口)


总结


px:绝对单位,页面按精确像素展示


em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算,整个页面内1em不是一个固定的值


rem:相对单位,可理解为root em, 相对根节点html的字体大小来计算


vh、vw:主要用于页面视口大小布局,在页面布局上更加方便简单


目录
相关文章
|
11月前
|
SQL 关系型数据库 MySQL
小索引大力量,记一次explain的性能优化经历
本文介绍了在MySQL生产环境中使用EXPLAIN工具进行性能优化的过程。通过分析慢查询日志,识别出性能瓶颈,并利用EXPLAIN命令解析SQL执行计划,找出全表扫描、未使用索引等问题。文章还详细描述了如何配置慢查询日志、解读EXPLAIN输出的关键字段(如type、key、rows等),并提供了优化建议,如避免左右模糊查询、减少多表联查等。最终验证优化效果,确保系统性能提升。此外,强调了项目初期建立索引的重要性,以应对未来数据量增长带来的挑战。
466 0
|
5月前
|
人工智能 算法
2025 生成式人工智能认证,如何构建知识能力价值闭环
生成式人工智能(AI)认证助力职场人士在2025年AI浪潮中脱颖而出。通过系统化学习,涵盖AI方法论、提示工程及伦理法律等领域,构建知识桥梁;强化实践能力,熟悉工具操作与问题解决;最终释放价值潜力,实现职业跃迁。GAI认证由培生Certiport推出,结合理论与实操,全面评估专业能力,赋能各类从业者,在技术发展中稳步前行。
ly~
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
312 6
|
人工智能 IDE 程序员
一文梳理我们是如何打造出国内领先的 AI 编程助手「通义灵码」
大语言模型的革命性突破使智能编程成为了可能,通义灵码正是基于通义大模型打造的 AI 编程助手,通过 IDE 插件的形式提供代码补全、单元测试生成等功能,能达到毫秒级的响应速度。目前,通义灵码已在阿里云内部及多家企业中应用,阿里云也在探索多智能体产品,即 AI 程序员,助力数字世界的蓬勃发展,颠覆 IT 生产力。
15773 242
|
9月前
|
人工智能 监控 Java
谷歌放弃AI武器禁令——这对AI的未来意味着什么
谷歌放弃AI武器禁令——这对AI的未来意味着什么
物联网卡不能使用在什么设备上
“物联网卡不能使用在什么设备上”这一操作或规定,通常基于物联网卡的特性、使用条款以及设备兼容性等因素。以下是对这一问题的详细分析和操作建议:
|
存储 芯片
STM32速成笔记(十一)—EEPROM(AT24C02)
本文详细介绍了什么是AT24C02,介绍了它的引脚,读/写时序,给出了应用实例和详细的程序设计。最后,简单介绍了AT24C02的应用场景。
2288 0
STM32速成笔记(十一)—EEPROM(AT24C02)
|
存储 缓存 关系型数据库
Mysql增量备份之Mysqldump & Mylvmbackup
Mysql增量备份之Mysqldump & Mylvmbackup
|
Linux 数据安全/隐私保护
Linux系统忘记密码的三种解决办法
这篇博客介绍了三种在Linux忘记密码时重置登录密码的方法:1) 使用恢复模式,通过控制台界面以管理员权限更改密码;2) 利用Linux Live CD/USB启动,挂载硬盘分区并使用终端更改密码;3) 进入单用户模式,自动以管理员身份登录后重置密码。每个方法都提供了详细步骤,提醒用户在操作前备份重要数据。
|
SQL 数据库
SQL LIKE 运算符:用法、示例和通配符解释
SQL中的LIKE运算符用于在WHERE子句中搜索列中的指定模式。通常与LIKE运算符一起使用的有两个通配符: 百分号 % 代表零个、一个或多个字符。 下划线 _ 代表一个单个字符。 以下是LIKE运算符的用法和示例:
859 0