CSS中的单位到底有多少种,我的意思是你够长吗?

简介: css 中的单位到底有多少种?它们之间有什么联系?它们之间又有什么区别?它们最终都会变成什么样的?今天我们就来一探究竟。

css中的单位到底有多少种?它们之间有什么联系?它们之间又有什么区别?它们最终都会变成什么样的?今天我们就来一探究竟。

1. 什么是CSS单位

CSS单位是用来描述CSS属性值的单位,比如widthheightfont-size等属性的值,都是用CSS单位来描述的。CSS单位可以分为两类:

  • 绝对单位:绝对单位是指不会随着页面的缩放而改变的单位,比如pxincm等。
  • 相对单位:相对单位是指会随着页面的缩放而改变的单位,比如emremvw等。

两者的区别在于,绝对单位不会随着页面的缩放而改变,而相对单位会随着页面的缩放而改变。这里的页面缩放指的是浏览器的缩放,比如浏览器的缩放比例为200%,那么页面的缩放比例也是200%。

2. CSS单位的分类

CSS单位可以分为下面几类:

  • 长度单位:长度单位是指用来描述长度的单位,比如pxemremvw等。
  • 角度单位:角度单位是指用来描述角度的单位,比如deggradrad等。
  • 时间单位:时间单位是指用来描述时间的单位,比如mss等。
  • 百分比单位:百分比单位是指用来描述百分比的单位,比如%等。
  • 其他单位:其他单位是指上述单位之外的单位,比如frch等。

下面只讲解长度单位,其他单位的讲解可以参考MDN

3. CSS长度单位

CSS长度单位是用来描述长度的单位,比如pxemremvw等。

长度单位主要作用于widthheightmarginpaddingborderfont-size等属性上。

长度单位一共有下面几种:

  • 绝对长度单位:绝对长度单位是指不会随着页面的缩放而改变的长度单位,比如pxincm等。
  • 相对长度单位:相对长度单位是指会随着页面的缩放而改变的长度单位,比如emremvw等。
  • 视口长度单位:视口长度单位是指会随着视口的大小而改变的长度单位,比如vwvhvminvmax等。
  • 百分比长度单位:百分比长度单位是指会随着父元素的大小而改变的长度单位,比如%等。
  • 字符长度单位:字符长度单位是指会随着字符的大小而改变的长度单位,比如chex等。
  • 网格长度单位:网格长度单位是指会随着网格的大小而改变的长度单位,比如fr等。

3.1 绝对长度单位

绝对长度单位是指不会随着页面的缩放而改变的长度单位,比如pxincm等。

绝对长度单位一共有下面几种:

  • pxpx是指像素,是CSS中最常用的长度单位,它的大小是相对于显示器屏幕分辨率而言的。
  • inin是指英寸,1英寸等于2.54厘米。
  • cmcm是指厘米。
  • mmmm是指毫米,1毫米等于0.1厘米。
  • ptpt是指点,1点等于1/72英寸。
  • pcpc是指派卡,1派卡等于12点。
div {
   
   
    width: 100px;
    height: 100in;
    margin: 100cm;
    padding: 100mm;
    border: 100pt solid red;
    font-size: 100pc;
}

3.2 相对长度单位

相对长度单位是指会随着页面的缩放而改变的长度单位,比如emremvw等。

相对长度单位一共有下面几种:

  • emem是指相对于父元素的字体大小,如果父元素没有设置字体大小,则相对于浏览器的默认字体大小。
  • remrem是指相对于根元素的字体大小,如果根元素没有设置字体大小,则相对于浏览器的默认字体大小。
  • vwvw是指相对于视口宽度的百分比。
  • vhvh是指相对于视口高度的百分比。
  • vminvmin是指相对于视口宽度和视口高度中较小的那个的百分比。
  • vmaxvmax是指相对于视口宽度和视口高度中较大的那个的百分比。
div {
   
   
    width: 100em;
    height: 100rem;
    margin: 100vw;
    padding: 100vh;
    border: 100vmin solid red;
    font-size: 100vmax;
}

3.3 视口长度单位

视口长度单位是指会随着视口的大小而改变的长度单位,比如vwvhvminvmax等。

视口长度单位一共有下面几种:

  • vwvw是指相对于视口宽度的百分比。
  • vhvh是指相对于视口高度的百分比。
  • vminvmin是指相对于视口宽度和视口高度中较小的那个的百分比。
  • vmaxvmax是指相对于视口宽度和视口高度中较大的那个的百分比。
div {
   
   
    width: 100vw;
    height: 100vh;
    margin: 100vmin;
    padding: 100vmax;
}

3.4 百分比长度单位

百分比长度单位是指相对于父元素的百分比长度单位,比如%%width%height等。

百分比长度单位一共有下面几种:

  • %%是指相对于父元素的百分比长度单位。
div {
   
   
    width: 100%;
    height: 100%;

    margin: 100%;
}

这里的margin的百分比是相对于父元素的宽度的百分比长度单位,其他的百分比长度单位也是一样的,因为对于浏览器来说宽度是固定的,高度是可变的,所以margin或者其他的百分比长度单位都是相对于宽度的百分比长度单位。

3.5 字符串长度单位

字符串长度单位是指字符串的长度,比如chexcapiclhrlh等。

字符串长度单位一共有下面几种:

  • chch是指字符的宽度。
  • exex是指字符的高度。
  • capcap是指大写字母的高度。
  • icic是指字符的平均宽度。
  • lhlh是指行高。
  • rlhrlh是指根据字体大小计算的行高。
div {
   
   
    width: 100ch;
    height: 100ex;
    margin: 100cap;
    padding: 100ic;
    border: 100lh solid red;
    font-size: 100rlh;
}

这里会有很多单位会标红,因为这些单位目前还没有被浏览器支持,只是作为一个标准来存在。

3.6 网格长度单位

网格长度单位是指网格的长度,比如frmin-contentmax-contentfit-contentauto等。

网格长度单位一共有下面几种:

  • frfr是指网格的比例。
  • min-contentmin-content是指内容的最小宽度。
  • max-contentmax-content是指内容的最大宽度。
  • fit-contentfit-content是指内容的最佳宽度。
  • autoauto是指自动宽度。
div {
   
   
    width: 100fr;
    /*width: min-content;*/
    /*width: max-content;*/
    /*width: fit-content;*/
    /*width: auto;*/
}

min-contentmax-contentfit-contentauto这几个不是单位,而是一个值,是一个关键字,但是最终也会转换成具体的值。

4. CSS长度单位的转换

CSS长度单位的转换是指将一个长度单位转换成另一个长度单位,比如将px转换成em等。

这里讲的是不管任何单位,最终在浏览器中都会转换成px,具体的原理我们可以不用去了解,但是我们需要知道转换的规则,这样我们在写代码的时候就会更加清晰最终生成的效果。

先来看一张图:

image.png

上面的图中marginpadding的单位都是rem,那他们最终会是什么样子呢?来看看:

image.png

最后结果的单位是px,这里的px是根据htmlfont-size来计算的,所以可以看到margin-bottom的值是32pxmargin-top的值是16px

当然其他的单位也是一样的,比如emremvhvw等,最终都会转换成px,这个就留给大家自己去尝试验证了,这里的规则和css的继承规则是一样的。

5. 总结

本文主要讲解了CSS长度单位的概念,以及CSS长度单位的转换,内容不够干,但是很扩展。

6. 参考

目录
相关文章
|
存储 前端开发 JavaScript
前端实现图片的懒加载
前端实现图片的懒加载
254 0
|
机器学习/深度学习 运维 算法
梯度&散度&旋度&峰度&偏度你分得清楚吗?驻点&鞍点你分得清楚吗?曲率&斜率你分得清楚吗?
本文介绍了四种常见的物理量:加速度,速度,位移和力学功。详细介绍了它们的定义、计算以及在物理学和工程学领域中的应用。此外,本文还介绍了四种与物理量相关的概念:向量、标量、质量和密度。 数学,物理,机器学习领域常见概念区分
2944 0
|
机器学习/深度学习 存储 人工智能
DeepSpeed ZeRO++:降低4倍网络通信,显著提高大模型及类ChatGPT模型训练效率
DeepSpeed ZeRO++:降低4倍网络通信,显著提高大模型及类ChatGPT模型训练效率
626 0
DeepSpeed ZeRO++:降低4倍网络通信,显著提高大模型及类ChatGPT模型训练效率
|
12月前
|
存储 缓存 自然语言处理
SCOPE:面向大语言模型长序列生成的双阶段KV缓存优化框架
KV缓存是大语言模型(LLM)处理长文本的关键性能瓶颈,现有研究多聚焦于预填充阶段优化,忽视了解码阶段的重要性。本文提出SCOPE框架,通过分离预填充与解码阶段的KV缓存策略,实现高效管理。SCOPE保留预填充阶段的关键信息,并在解码阶段引入滑动窗口等策略,确保重要特征的有效选取。实验表明,SCOPE仅用35%原始内存即可达到接近完整缓存的性能水平,显著提升了长文本生成任务的效率和准确性。
616 3
SCOPE:面向大语言模型长序列生成的双阶段KV缓存优化框架
|
9月前
|
人工智能 关系型数据库 MySQL
解决MySQL自增id用尽的问题
本文介绍了解决文章点击记录表(`article_click_record`)数据量激增问题的方案。由于用户量大,每天新增约400万条记录,导致表id接近溢出(2,100,000,000),且占用空间超320G。解决方案包括:1) 新建`article_click_record_new`表,将id类型改为BIGINT以避免溢出;2) 过渡阶段同时写入新旧表,待旧表id溢出后切换至新表;3) 定时清理过期数据或转移旧表内容。实现方式涉及修改相关接口和服务逻辑,确保业务平稳过渡。
197 5
|
前端开发
前端:下载文件(多种方法)
前端:下载文件(多种方法)
1367 0
|
数据采集 Web App开发 iOS开发
使用Selenium时,如何模拟正常用户行为?
使用Selenium时,如何模拟正常用户行为?
|
存储 监控 关系型数据库
MySQL并发控制与管理:优化数据库性能的关键
【10月更文挑战第17天】MySQL并发控制与管理:优化数据库性能的关键
988 0
|
安全 前端开发 JavaScript
什么是跨域?为什么会产生跨域?怎么解决跨域?
什么是跨域?为什么会产生跨域?怎么解决跨域?
2267 0
|
Java Docker 容器
SpringBoot项目集成XXL-job
SpringBoot项目集成XXL-job
1181 1