简述 pt、rpx、px、em、rem、%、vh、vw的区别

设备物理像素

pt:屏幕宽、分辨率,其中每一小份就是1pt。

css 像素

px:

  • pc 机大屏幕显示器,1px约等于0.76个物理像素
  • 手机小屏幕:以IPhone6为标准,物理像素750,分辨率375 1px = 2pt。
  • px 也是一个相对单位
  • px 是为了平衡一个元素在PC上显示的大小与在手机上显示的大小尽量一致而制定的。
  • 手机屏幕大小不一,差异较大,所以反而不希望一个元素在所有手机上显示一样大。而是希望能够自动等比缩放。所以移动端不用px。
  • 通常PC端大屏浏览器的网页,使用px 单位比较多。
  • 移动端少用,因为 px 的长度相对固定,无法根据大小不一的移动端设备自适应改变大小。

rem:

  • 以网页根元素<html>元素上设置的默认字体大小为1rem 默认 1rem=16px
  • 可以实现响应式布局。
  • 响应式布局指的是元素大小能根据屏幕大小随时变化。
  • 所有以 rem 为单位的位置、大小都跟着根元素字体大小而变化。
  • 所以只要在屏幕大小变化的时候改变根元素的 font-size 就可以了。

em:

  • 父元素的字体大小为1em 用的不多。
  • 相对于父元素字体大小的单位,多层嵌套可能导致累积计算。

rpx:

小程序专用。

  • 以iPhone 为标准,物理像素750,分辨率 375。无论屏幕大小,都将屏幕分成750份,每份就是1rpx, 1rpx=0.5px=1pt
  • 优点:通过 rpx 设置元素和字体的大小,小程序在不同尺寸的屏幕下,可以实现自动适配。

vm/vh:

CSS3 新特性。

  • vh: 无论视口高度多少,都将视口高均分为100份,每一小份就是100vh,所以,也是相对单位可随视口大小变化而自动变化。
  • vw:无论视口宽度多少,都将视口宽均分100份,每一小份就是100vw,所以也是相对单位,可随视口大小变化而自动变化。
  • vw 和 vh 本质就是%
  • 这里视口指的是浏览器内部的可视区域大小。

%:

  • 通常认为子元素的百分比完全相对于直接父元素,但是,不总是相对于父元素的对应属性值。
  • 子元素的 top 和 bottom 如果设置百分比,则相对于直接非 static 定位(默认定位)的父元素高度。
  • 子元素的left 和 right 如果设置百分比,则相对于直接非 static 定位父元素的宽度。
  • 子元素的 padding/margin 如果设置百分比,不论是垂直方向或者水平方向,都相对于直接父亲元素的padding/margin,与父元素的height有关。
  • 因为 % 不总是相对于父元素的宽高或者屏幕大小,所以开发少用。

往期热门精彩推荐

面试相关热门推荐

前端万字面经------基础篇

前端万字面积------进阶篇

实战开发相关推荐

前端常用的几种加密方法

不懂 seo 优化?一篇文章帮你了解如何去做 seo 优化

【实战篇】微信小程序开发指南和优化实践

前端性能优化实战

聊聊让人头疼的正则表达式

获取文件blob流地址实现下载功能

Vue 虚拟 DOM 搞不懂?这篇文章帮你彻底搞定虚拟 DOM

移动端相关推荐

移动端横竖屏适配与刘海适配

移动端常见问题汇总

聊一聊移动端适配

Git 相关推荐

通俗易懂的 Git 入门

git 实现自动推送

更多精彩详见:个人主页

相关推荐
小华同学ai2 分钟前
终于有人帮你整理好了,火爆的“系统级提示词”支持ChatGPT、Claude、Gemini、xAI的
前端·后端·github
葡萄城技术团队5 分钟前
SpreadJS 电子表格权限管控设置指南
前端
HashTang5 分钟前
一个人就是一支队伍:从 Next.js 到显示器,聊聊我的“全栈续航”方案
前端·后端·程序员
朕的剑还未配妥11 分钟前
vue2中transition使用方法解析,包含底部弹窗示例、样式未生效踩坑记录
前端·vue.js
q***484113 分钟前
Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
android·前端·后端
码上成长14 分钟前
组件库提速:Storybook + Chromatic + Visual Test 实战
前端·自动化
灵犀坠23 分钟前
前端核心知识体系梳理:从Vue 3到现代CSS与JavaScript
前端·javascript·vue.js
lcc18726 分钟前
Vue3 新的组件
前端·vue.js
AskHarries28 分钟前
技术人最深的三大痛点:看见的人不多,说出口的人更少
前端·后端·程序员
星尘库28 分钟前
怎么实现js混淆加密 每隔一段时间 会失效 需要重新加密使用
java·服务器·前端