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 ,以便通过根元素字体大小的适配,就能实现整个网页的自适应。

目录
相关文章
|
前端开发 JavaScript Serverless
揭秘CSS布局神器:vw/vh、rem、%与px大PK,掌握它们,让你的网页设计秒变高大上,面试难题迎刃而解!
【8月更文挑战第4天】在Web开发中,合理选择CSS单位对响应式布局至关重要。本文探索viewport单位(vw/vh)、rem、百分比(%)及像素(px)的基础知识与应用场景。通过代码示例,展示如何运用这些单位实现全屏布局、尺寸比例调整、灵活的元素大小及固定尺寸。最后,模拟面试题,介绍如何仅用CSS实现一个元素的高度为其宽度两倍且响应视口变化的方法。
981 8
|
前端开发 JavaScript
vite中css最佳实践:使用postcss完善项目中的css配置
【8月更文挑战第3天】使用postcss完善项目中的css配置
4200 1
|
前端开发 UED 开发者
CSS基础-属性值单位:px, em, rem, %
【6月更文挑战第7天】本文探讨了CSS中四种关键的尺寸单位:像素(px)、相对单位(em)、rem和百分比(%)。px提供稳定显示但不适用于响应式设计;em根据上下文动态调整,但嵌套使用可能导致计算复杂;rem简化了嵌套计算,适合作为响应式设计的选择;%用于流体布局,但可能在复杂结构中引起不稳定。理解各单位特性并结合现代布局技术,能提升网页布局的美观性和用户体验。
465 3
|
前端开发
css中px和em的区别
css中px和em的区别
240 0
|
前端开发
css中px和em的区别
css中px和em的区别
|
编解码 前端开发
CSS【详解】长度单位 ( px,%,em,rem,vw,vh,vmin,vmax,ex,ch )
CSS【详解】长度单位 ( px,%,em,rem,vw,vh,vmin,vmax,ex,ch )
358 0
|
前端开发 JavaScript
CSS 【详解】响应式布局(含 rem 详解)
CSS 【详解】响应式布局(含 rem 详解)
463 0
|
移动开发 JavaScript 前端开发
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    572
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    434
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    436
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    284
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    549
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    727
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1414
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    315
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1168
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    509