Web前端入门第 24 问:CSS 单位
单位
就是那个形容长度大小的东西。比如身高180cm(厘米),cm就是单位。
css 也不例外,要描述一个盒子的大小,就必须要用到单位。
css 单位根据其作用分为几大类:绝对单位
、相对单位
、视口单位
、角度单位
、时间单位
、网格单位
、频率单位
、分辨率单位
。
动态计算单位
认识单位之前,先认识几个动态计算函数,这东东的用法可强大了,后续再介绍。
calc()
动态计算值(如width: calc(100% - 20px)
)min()
取最小值(如width: min(100%, 500px)
)max()
取最大值(如width: max(50%, 300px)
)clamp()
限制在范围(如font-size: clamp(1rem, 2.5vw, 2rem)
)
绝对单位
绝对单位的大小固定不变,与屏幕或设备无关,适合精确控制。例如一个长宽20像素的盒子,不管是在电脑上还是手机中,其大小就是20px。
需要注意系统缩放,分辨率2560x1440的笔记本电脑,如果缩放100%,其宽度还是2560像素;如果缩放150%,其宽度将变为2560÷1.5=1706.66。。
同一个20像素,在缩放100%和缩放150%肉眼看到的大小是不一样的。
px
(像素)
最常用单位,1px = 1屏幕像素(非物理像素),适合固定尺寸元素(边框、图标)cm
(厘米)
实际物理尺寸(1cm ≈ 37.8px),多用于打印样式mm
(毫米)
同厘米,但更精细(1cm = 10mm)in
(英寸)
1in = 2.54cm ≈ 96pxpt
(点)
印刷单位,1pt = 1/72英寸 ≈ 1.33pxpc
(派卡)
印刷单位,1pc = 12pt ≈ 16px
cm
、 mm
、 in
、 pt
、 pc
这些单位主要用于打印和其他需要精确尺寸的场合。
相对单位
相对单位的大小基于其他参考值(父元素、视口、字体大小等),适合响应式设计。
相对单位必须要找一个老六,老六的大小就是他的标准。
em
相对于当前元素的字体大小,1em等于当前元素的字体大小。如果父元素有font-size属性,则子元素的em值是根据父元素的字体大小计算的。适用于创建可以相对于用户设定的字体大小缩放的布局。rem
相对于根元素(html元素)的字体大小,1rem等于根元素的字体大小。使用rem单位可以方便地进行响应式布局,同时避免em单位的嵌套导致的复杂计算问题。%
相对于父元素的尺寸,例如width: 50%表示元素宽度为父元素宽度的50%。ch
相对于当前元素的字体宽度,1ch = 当前字体中 "0" 字符的宽度,适合文本排版对齐。ex
相对于当前字体的x高度,1ex等于当前字体的x高度,使用较少。
视口单位
视口单位就是相对于浏览器窗口的宽度或高度,它与屏幕或设备无关,只与浏览器的可视窗口有关。
vw
视口宽度的1%(50vw = 视口宽度的一半)。vh
视口高度的1%。vmin
取视口宽高中较小的1%(如竖屏手机中相当于vw)。vmax
取视口宽高中较大的1%。svh/lvh
区分短视口(svh
)和完整视口(lvh
),解决移动端浏览器地址栏遮挡问题。
角度单位
对头,就是那个三角函数中的角度,弧度。
deg
(度数)
表示角度,用于控制旋转和变形。rad
(弧度)
表示弧度,用于控制旋转和变形。grad
(梯度)
表示梯度,用于控制旋转和变形。turn
(圈数)
表示旋转的圈数,用于控制旋转和变形。
时间单位
多用于控制持续时间,如动画。
s
(秒)
用于控制动画和过渡的时间长度。ms
(毫秒)
用于控制动画和过渡的时间长度,是秒的千分之一。
网格单位
用于网格布局,就是 Grid。
fr
表示网格容器剩余空间的一部分,用于网格布局。
频率单位
嘿...这个真不常见。
Hz
(赫兹)
表示频率,用于控制动画和音频的播放速度。kHz
(千赫兹)
表示千赫兹,是赫兹的千倍,用于控制音频的播放速度。
分辨率单位
用于打印媒体查询,没见过~~
dpi
(每英寸点数)
表示每英寸的点数,用于控制图片大小和清晰度。dpcm
(每厘米点数)
表示每厘米的点数,用于控制图片大小和清晰度。dppx
(每像素点数)
表示每像素的点数,用于控制图片大小和清晰度。
常用单位
这么多单位,可不是每个都会使用的,一般常用的也就几个,如下:
px
边框、固定尺寸图标、微小间距。%
容器宽度、高度(相对于父元素)。rem
字体大小、间距、布局尺寸。vw/vh
全屏布局、响应式字体/元素。fr
CSS Grid 布局中的弹性列宽。calc()
动态计算尺寸(如 calc(100% - 20px)。clamp()
流体响应式设计(如字体、容器尺寸)。
总结
核心掌握:
px
、%
、rem
、vw/vh
、fr
、calc()
、min()
、max()
、clamp()
。了解即可:
em
、vmin/vmax
、ch
。特殊场景备用:
svh/lvh
、ex
。无需深究:
cm
、mm
、in
、pt
、pc
。
Web前端入门第 24 问:CSS 单位的更多相关文章
- web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史
秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...
- 好程序员web前端分享18个用CSS制作出来的东西
好程序员web前端分享18个用CSS制作出来的东西,与流行的看法相反,CSS不仅仅是用来提供一个WEB页面的基本风格,以使它看起来更有吸引力.还有很多其他的事情,CSS也可以做的很好.由于它创建动画和 ...
- 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM
好程序员web前端分享值得参考的css理论:OOCSS.SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCS ...
- 进击的Python【第十三章】:Web前端基础之HTML与CSS样式
进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客 ...
- Android零基础入门第24节:自定义View简单使用
原文:Android零基础入门第24节:自定义View简单使用 当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义View来满足这些特殊的组件需求. 一.概述 很多初入Andr ...
- web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】
http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...
- web前端(7)—— 了解CSS样式,引入css样式的方式
CSS 在前面大概的介绍了css,从本片博文开始,会详细的介绍它,在最开始介绍web前端时,打开百度首页,当时我提出了一个问题,为什么百度首页的输入框可以放在正中间,就是由于有css的控制,我们可以打 ...
- web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触
15.SVN的介绍和应用 15.1.SVN的介绍和应用课程概要 将代码进行集中管理,有版本号的进行迭代,方便集体工作的build流程 15.2.SVN的介绍 SVN是Subversion的简称,是一个 ...
- Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...
- [转载]Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
http://brackets.io/ Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维 ...
随机推荐
- LCR 170. 交易逆序对的总数
交易逆序对的总数 在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」.请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数. 示例 ...
- C# 获取系统声卡音频数据,并绘制波形
//by wgscd //date:2022/11/7 UI: <Path Stroke="Red" Data="{Binding path}" Rend ...
- springboot集成webService开发详解
https://blog.csdn.net/m0_51111980/article/details/124581559https://blog.csdn.net/qq_43842093/article ...
- biancheng-MongoDB教程
目录http://c.biancheng.net/mongodb2/ 1NoSQL是什么2MongoDB是什么3Windows安装MongoDB4Linux安装MongoDB5MacOS安装Mongo ...
- 配置教程-jdk-tomcat-maven
二.下载并安装JDK 选择一个适合自己的JDK版本下载并安装即可,具体流程不详述. 二.环境变量配置 1.右键桌面上"我的电脑">>"属性",在弹出 ...
- oracle使用存储过程返回游标实现报表查询
最近在oracle中通过存储过程实现一个报表查询,查询涉及到数据计算这里使用了临时表和存储过程实现输出查询,java接受游标变量返回结果集 第一步.创建统计使用的临时表 CREATE GLOBAL T ...
- Ubuntu开启root账户步骤
在VMware中新建一个Ubuntu,经常使用sudo 太麻烦,还是开启root账户吧. 1.打开 终端: 输入下列命令sudo gedit /usr/share/lightdm/lightdm.co ...
- [源码分析] Facebook如何训练超大模型--- (5)
[源码分析] Facebook如何训练超大模型--- (5) 目录 [源码分析] Facebook如何训练超大模型--- (5) 0x00 摘要 0x01 背景 0x02 思路 2.1 学习建议 2. ...
- Xshell不可以删除,退格^H
文件→属性→终端→键盘,把delete和backspace序列改为 ASCII 127即可.
- Iceberg的Copy on Write和Merge On Read介绍
一.默认的Copy on Write Copy no Write模式指的是在进行更新数据时,先将数据拷贝出来进行相应的更新,再替换掉原先的数据 二.Merge On Read读取时合并 在v2版本才支 ...