css字体大小单位px em rem vw vh区别

css字体大小单位px em rem vw vh区别
最新回答
巷陌

2020-10-10 15:29:39

CSS中字体大小单位px、em、rem、vw、vh的核心区别在于计算基准与适用场景:px为绝对单位,em基于父元素且会嵌套叠加,rem基于根元素,vw/vh分别相对于视口宽高的1%。具体分析如下:

1. px(像素)
  • 计算基准:绝对单位,表示屏幕上的一个物理像素点。例如,font-size: 16px 即固定为16像素大小。
  • 特点

    大小固定:不随父元素字体大小或页面缩放变化。

    简单直观:适合需要精确控制的场景(如品牌字体、图标尺寸)。

    局限性:不利于可访问性,用户无法通过浏览器设置调整文字大小。

  • 适用场景:需要严格保持尺寸的设计元素(如边框、固定布局的标题)。
2. em(相对单位,基于父元素)
  • 计算基准:相对于当前元素或其直接父元素的字体大小。若父元素字体为16px,则1em = 16px。
  • 特点

    继承与叠加:em值会逐级继承,容易造成嵌套层级中的计算复杂。

    示例:父元素font-size: 16px,子元素font-size: 1.5em → 实际为24px(16 × 1.5);若孙子元素也设1.5em,则基于子元素的24px计算 → 36px。

    灵活性:适合局部相对调整(如按钮内文字随容器缩放)。

  • 适用场景:需要与父元素字体比例保持一致的组件(如导航菜单、卡片标题)。
3. rem(根em,基于根元素)
  • 计算基准:相对于根元素(<html>)的字体大小。默认情况下,html的font-size为16px,因此1rem = 16px。
  • 特点

    统一控制:不受父级字体影响,避免em的层层放大问题。

    响应式友好:通过调整html的font-size可全局缩放页面字体(如媒体查询中修改根字体)。

    示例:设置html { font-size: 10px; },则1rem = 10px,2rem = 20px。

  • 适用场景:需要整体比例协调的页面(如文章正文、全局标题),或配合媒体查询实现响应式设计。
4. vw(视口宽度单位)
  • 计算基准:视口宽度的1%。若屏幕宽度为1000px,则1vw = 10px。
  • 特点

    动态调整:字体大小随视口宽度变化,实现流体效果。

    示例:font-size: 5vw → 字体大小为视口宽度的5%,在移动端窄屏下自动变小,宽屏下变大。

    兼容性:主流浏览器均支持,但极端宽高比下可能需额外限制。

  • 适用场景:需要随屏幕宽度自适应的标题或标语(如横幅文字、全屏展示文本)。
5. vh(视口高度单位)
  • 计算基准:视口高度的1%。若屏幕高度为800px,则1vh = 8px。
  • 特点

    垂直自适应:主要用于布局高度控制(如全屏区块),但也可用于字体实现垂直空间自适应。

    兼容性:部分移动浏览器(如Safari)可能因工具栏隐藏/显示影响实际高度计算。

  • 适用场景:需要与视口高度关联的文字(如落地页标语、垂直居中文本),但布局中更常用。
单位选择建议
  • 固定尺寸:优先用px(如图标、边框)。
  • 局部相对调整:用em(如按钮内文字、嵌套组件)。
  • 全局比例控制:用rem(如正文、标题层级)。
  • 响应式流体效果:结合vw(如横幅标题)或vh(如垂直空间文字),但需测试兼容性。
  • 混合使用:例如根字体用rem实现整体缩放,局部标题用vw增强视觉冲击力。

通过合理搭配这些单位,可兼顾设计精确性、可维护性与响应式需求。