CSS篇:前端干货!1分钟分清rem、em、vw和%的区别✨

06-01 1055阅读

CSS篇:前端干货!1分钟分清rem、em、vw和%的区别✨

🎓 作者简介: 前端领域优质创作者

🚪 资源导航: ">传送门=>

🎬 个人主页: 江城开朗的豌豆

🔥 个人专栏:《VUE》 📘《JavaScript》 📚

🌐 个人网站:    江城开朗的豌豆 🌍

📧 个人邮箱:    YANG_TAO_WEB@163.com 📩

💬 个人微信:     y_t_t_t_ 📱

📌  座  右 铭:    生活就像心电图,一帆风顺就证明你挂了。💔

👥  QQ群:       906392632 (前端技术交流群) 💬


🌟 欢迎来到我的个人主页!这里是我分享技术心得和生活感悟的地方。希望你能在这里找到有价值的内容,也欢迎随时联系我交流讨论!🚀

目录

引言

1. rem(Root EM)

定义

计算方式

适用场景

示例

2. em(相对父级单位)

定义

计算方式

适用场景

示例

3. vw / vh(视窗单位)

定义

计算方式

适用场景

示例

4. 百分比(%)

定义

计算方式

适用场景

示例

5. 对比总结

6. 最佳实践建议

结语


引言

在前端开发中,CSS单位的选择直接影响页面的布局适配能力。不同的单位(如rem、em、vw/vh、%)适用于不同的场景,理解它们的计算规则和适用场景,能帮助我们更高效地实现响应式设计。本文将深入对比这些单位,并给出实际应用建议。


1. rem(Root EM)

定义

rem(Root EM)是相对于**根元素()的font-size**计算的单位。

计算方式
  • 默认情况下,浏览器根元素的font-size为16px,因此 1rem = 16px。

  • 可以通过修改html的font-size来调整rem的基准值:

    html {
      font-size: 10px; /* 1rem = 10px */
    }
    适用场景

    ✅ 全局响应式布局(如移动端适配)

    ✅ 需要整体缩放的元素(如字体、间距、宽高)

    示例
    .container {
      width: 20rem; /* 20 × 10px = 200px */
      padding: 1rem; /* 10px */
    }

    2. em(相对父级单位)

    定义

    em 是相对于**父元素的font-size**计算的单位。

    计算方式
    • 如果父元素的font-size是16px,则 1em = 16px。

    • 嵌套时计算会累积,容易导致尺寸失控:

      .parent { font-size: 16px; }
      .child { font-size: 0.8em; } /* 16px × 0.8 = 12.8px */
      .grandchild { font-size: 0.8em; } /* 12.8px × 0.8 = 10.24px */
      适用场景

      ✅ 局部样式调整(如按钮内边距、图标对齐)

      ❌ 不适合多层嵌套布局(计算复杂)

      示例
      .button {
        font-size: 1em; /* 继承父级字体 */
        padding: 0.5em 1em; /* 相对父级字体计算 */
      }

      3. vw / vh(视窗单位)

      定义
      • vw(Viewport Width):1vw = 视窗宽度的1%

      • vh(Viewport Height):1vh = 视窗高度的1%

        计算方式
        • 如果视窗宽度是1200px,则 10vw = 120px。

        • 不受父元素影响,直接基于浏览器窗口计算。

          适用场景

          ✅ 全屏布局(如轮播图、背景图)

          ✅ 视窗比例适配(如弹窗、浮动元素)

          示例
          .fullscreen-banner {
            width: 100vw; /* 占满整个视窗宽度 */
            height: 50vh; /* 视窗高度的一半 */
          }

          4. 百分比(%)

          定义

          百分比单位是相对于父元素的对应属性计算的,不同属性的参照对象可能不同。

          计算方式
          • width: 50% → 父元素宽度的50%

          • padding-top: 50% → 参照父元素的宽度(而不是高度!)

            适用场景

            ✅ 流式布局(如栅格系统、弹性盒子)

            ✅ 依赖父级尺寸的元素(如自适应容器)

            示例
            .parent {
              width: 200px;
            }
            .child {
              width: 50%; /* 100px */
              padding-top: 25%; /* 50px(基于父元素宽度计算) */
            }

            5. 对比总结

            单位参照对象特点适用场景
            rem根元素font-size全局可控,适合响应式移动端适配、全局缩放
            em父元素font-size嵌套易混乱局部样式(按钮、图标)
            vw/vh视窗宽高直接响应视窗变化全屏布局、视窗比例适配
            %父元素对应属性依赖父级结构流式布局、栅格系统

            6. 最佳实践建议

            1. 移动端适配 → rem + 媒体查询

              html {
                font-size: calc(10px + 0.5vw); /* 动态调整基准值 */
              }
            2. 全屏元素 → vw/vh

              .hero-section {
                height: 100vh;
              }
            3. 流式布局 → % + flex/grid

            4. 避免em嵌套问题 → 仅在局部使用,或改用rem


            结语

            不同的CSS单位各有优劣,理解它们的计算规则和适用场景,能让我们更灵活地实现响应式设计。建议在项目中结合rem、vw/vh和百分比,根据需求选择最佳方案。

            欢迎在评论区交流你的CSS单位使用心得! 🚀

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码