当前位置: 首页 > web >正文

CSS 单位完全指南:掌握 em、rem、vh、vw 等响应式布局核心单位

目录

一、绝对单位 vs 相对单位

二、核心相对单位详解

1. em 单位

2. rem 单位(Root em)

3. vh 与 vw 单位

4. vmin 与 vmax 单位

 三、实战应用场景对比

五、专家建议与最佳实践

六、总结


一、绝对单位 vs 相对单位

绝对单位(如px)固定不变,而相对单位则基于其他参考值动态计算,更适合响应式设计:

/* 绝对单位示例 */
.fixed-size {width: 300px; /* 始终为300像素 */
}/* 相对单位示例 */
.responsive-size {width: 50vw; /* 视口宽度的一半 */
}

二、核心相对单位详解

1. em 单位
  • 计算方式:相对于当前元素的字体大小

  • 特点:具有继承性,层级嵌套时会产生复合效果

    .parent {font-size: 16px;
    }.child {font-size: 1.5em; /* 16px × 1.5 = 24px */padding: 2em;     /* 24px × 2 = 48px */
    }
    2. rem 单位(Root em)
  • 计算方式:相对于根元素(html)的字体大小

  • 特点:避免嵌套影响,更易控制全局比例

    html {font-size: 62.5%; /* 1rem = 10px (基于16px默认大小) */
    }.container {font-size: 1.6rem; /* 16px */margin: 2rem;      /* 20px */
    }
    3. vh 与 vw 单位
  • vh:1% 的视口高度

  • vw:1% 的视口宽度

  • 特点:直接响应视口尺寸变化

    .hero-banner {height: 100vh;   /* 满屏高度 */width: 80vw;     /* 视口宽度的80% */
    }
    4. vmin 与 vmax 单位
  • vmin:取 vh/vw 中的较小值

  • vmax:取 vh/vw 中的较大值

    /* 在移动端横屏时特别有用 */
    .responsive-square {width: 50vmin;  /* 总保持较小尺寸的50% */height: 50vmin; /* 形成完美正方形 */
    }

     三、实战应用场景对比

    单位适用场景注意事项
    rem字体大小、间距设置html{font-size:62.5%}简化计算
    em与特定文本相关的内边距/外边距注意多层嵌套的复合效果
    vw/vh全屏布局、横幅移动端100vh可能包含地址栏高度
    %基于父元素的尺寸父元素必须有明确尺寸定义

四、响应式单位组合实战 

/* 响应式排版系统 */
html {font-size: 16px;/* 小屏幕调整 */@media (max-width: 768px) {font-size: 14px;}
}h1 {font-size: calc(1.5rem + 2vw); /* 基础大小+视口自适应 */
}/* 完美居中容器 */
.container {width: min(90vw, 1200px); /* 响应式宽度限制 */margin: 0 auto;
}/* 移动端适配 */
@media (orientation: portrait) {.sidebar {height: 50vmax; /* 竖屏时使用较大尺寸 */}
}

五、专家建议与最佳实践

  1. 字体系统:优先使用rem为主、em为辅

  2. 布局系统:主框架使用vw/vh,内部元素用%

  3. 移动端适配:使用dvh(dynamic viewport height)解决地址栏问题

  4. 安全计算:结合min()max()clamp()函数

    /* 安全响应式文本 */
    .title {font-size: clamp(1.5rem, 4vw, 3rem);
    }/* 移动端高度修正 */
    .mobile-section {height: 100dvh; /* 动态视口高度 */
    }

    关键提示:CSS4将引入新的容器查询单位(如cqw/cqh),可实现基于组件自身的响应式设计!

六、总结

掌握CSS相对单位是构建现代响应式网站的必备技能:

  • 使用rem构建可预测的缩放系统

  • em适合局部相对控制

  • vw/vh创建视口相关布局

  • vmin/vmax处理复杂方向变化

  • 组合使用并配合现代CSS函数实现精细控制

 

http://www.xdnf.cn/news/15960.html

相关文章:

  • 仙盟数据库应用-外贸标签打印系统 前端数据库-V8--毕业论文-—-—仙盟创梦IDE
  • 单链表专题
  • docker compose 编排容器 mysql Springboot应用
  • 使用pnpm安装项目的生产依赖dependencies和开发依赖devDependies及pnpm工作空间等简单使用方法说明
  • 全面解析MySQL(2)——CRUD基础
  • SQL 调优第一步:EXPLAIN 关键字全解析
  • HTTP1-HTTP2-HTTP3简要概述
  • day 12 看门狗外设
  • 运行时常量池 和 字符串常量池 区别
  • 【数据集】NOAA 全球监测实验室(GML)海洋边界层(MBL)参考简介
  • 虚拟机VMware安装国产桌面系统统信UOS
  • 传输层协议 TCP
  • 【Python数据采集】Python爬取小红书搜索关键词下面的所有笔记的内容、点赞数量、评论数量等数据,绘制词云图、词频分析、数据分析
  • docker-compose启动前后端分离项目(单机)
  • ARFoundation系列讲解 - 101 VisionPro 真机调试
  • MySQL EXPLAIN 解读
  • DAY 20 奇异值分解(SVD)
  • ant+Jmeter+jenkins接口自动化,如何实现把执行失败的接口信息单独发邮件?
  • leetcode丑数II计算第n个丑数
  • zabbix服务器告警处理
  • 【milvus检索】milvus检索召回率
  • pages.json页面路由中,globalStyle的各个属性
  • 社交圈子系统开源社交源码 / 小程序+H5+APP 多端互通的底层技术分析
  • Ubuntu 24.04 设置静态 IP 的方法
  • 对LLM某一层进行优化:通过眼动数据发现中间层注重语句内在含义,进而对中间层参数优化
  • pthread_detach与pthread_join区别及使用场景
  • 408考研逐题详解:2010年第35题——RIP协议
  • BST(二叉搜索树)的笔试大题(C语言)
  • AG32:解锁MCU+FPGA应用新姿势,功能与实战全解析
  • SQL中的EXPLAIN命令详解