css相对单位 rem 和 em 的最佳实践

简介: css相对单位 rem 和 em 的最佳实践

rem 相对于根元素进行计算,若根元素的 font-size为16px,则其他元素的2rem的大小为 2*16 = 32px 。(根元素是指没有父节点的 dom 节点,在html中是html标签)

em相对于最近的父元素进行计算,若父元素的 font-size为16px,则子元素2em的大小为 2*16 = 32px

演示范例如下:

直观效果为:rem 只和根元素有关,不会因嵌套而层层放大。而 em 因和父元素有关,嵌套越深,放大倍数越多。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>rem和em效果演示</title>
  </head>
  <body>
    <div class="mainBox">
      <p>根元素的font-size为20px</p>

      <div class="box1">
        <p>box1的font-size为2rem的效果为40px</p>

        <div>
          <p class="child">box1的子元素2rem的效果仍为40px</p>
        </div>
      </div>

      <div class="box2">
        <p>box2的font-size为2em效果为40px</p>

        <div>
          <p class="child">box2的子元素2em的效果为80px</p>
        </div>
      </div>

      <div class="box3">
        <p>box3的font-size为12px</p>

        <div>
          <p class="child">box3的子元素2em的效果为24px</p>
        </div>
      </div>
    </div>
    <style>
      .mainBox {
        display: flex;
      }
      div {
        border: 1px solid;
      }
      html {
        font-size: 20px;
      }
      .box1 {
        font-size: 2rem;
      }
      .box1 .child {
        font-size: 2rem;
      }

      .box2 {
        font-size: 2em;
      }
      .box2 .child {
        font-size: 2em;
      }

      .box3 {
        font-size: 12px;
      }
      .box3 .child {
        font-size: 2em;
      }
    </style>
  </body>
</html>

最佳实践

若某些模块,如范例中的 box3 需要单独设置与根元素不同的字体大小,则在box3内部的子元素需随 box3 字体大小变化的内容,不能使用 rem 为单位,而应使用 em。

em 维护的是某模块内嵌套元素固定的比例关系

其他情况,都推荐使用 rem ,以便通过根元素字体大小的适配,就能实现整个网页的自适应。

目录
相关文章
|
2月前
|
编解码 前端开发 UED
解密CSS单位:px、em、vh的区别与应用
解密CSS单位:px、em、vh的区别与应用
23 1
|
16天前
|
前端开发 JavaScript Serverless
揭秘CSS布局神器:vw/vh、rem、%与px大PK,掌握它们,让你的网页设计秒变高大上,面试难题迎刃而解!
【8月更文挑战第4天】在Web开发中,合理选择CSS单位对响应式布局至关重要。本文探索viewport单位(vw/vh)、rem、百分比(%)及像素(px)的基础知识与应用场景。通过代码示例,展示如何运用这些单位实现全屏布局、尺寸比例调整、灵活的元素大小及固定尺寸。最后,模拟面试题,介绍如何仅用CSS实现一个元素的高度为其宽度两倍且响应视口变化的方法。
46 8
|
13天前
|
前端开发 JavaScript
vite中css最佳实践:使用postcss完善项目中的css配置
【8月更文挑战第3天】使用postcss完善项目中的css配置
33 1
|
5天前
|
前端开发
css中px和em的区别
css中px和em的区别
|
1月前
|
编解码 前端开发
CSS【详解】长度单位 ( px,%,em,rem,vw,vh,vmin,vmax,ex,ch )
CSS【详解】长度单位 ( px,%,em,rem,vw,vh,vmin,vmax,ex,ch )
24 0
|
1月前
|
前端开发 JavaScript
CSS 【详解】响应式布局(含 rem 详解)
CSS 【详解】响应式布局(含 rem 详解)
19 0
|
2月前
|
前端开发 UED 开发者
CSS基础-属性值单位:px, em, rem, %
【6月更文挑战第7天】本文探讨了CSS中四种关键的尺寸单位:像素(px)、相对单位(em)、rem和百分比(%)。px提供稳定显示但不适用于响应式设计;em根据上下文动态调整,但嵌套使用可能导致计算复杂;rem简化了嵌套计算,适合作为响应式设计的选择;%用于流体布局,但可能在复杂结构中引起不稳定。理解各单位特性并结合现代布局技术,能提升网页布局的美观性和用户体验。
|
2月前
|
移动开发 JavaScript 前端开发
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
|
8天前
|
JSON 前端开发 JavaScript
使用html,css,js 实现一个龙年春节祝福卡片效果
使用html,css,js 实现一个龙年春节祝福卡片效果
29 4
|
1月前
|
前端开发 UED
使用HTML和CSS创建响应式表格
在网页设计中,表格是一种组织和展示数据的有效方式。本文档将指导你如何使用HTML和CSS来创建一个既美观又响应式的表格,以便在不同设备和屏幕尺寸上都能良好显示。我们将涵盖基础的HTML表格结构,样式美化以及如何实现响应式布局,使得表格内容在小屏设备上也能清晰阅读
79 0