0

0

CSS字号设置技巧_px、em、rem单位的选择与转换

P粉602998670

P粉602998670

发布时间:2026-03-03 11:18:13

|

829人浏览过

|

来源于php中文网

原创

px在需响应式缩放或适配多设备时不可用,因其无法随根元素或视口变化;适合固定精度场景如图标文字,但正文标题等弹性排版应避免。

css字号设置技巧_px、em、rem单位的选择与转换

px 在 CSS 中什么时候不能用

当设计需要响应式缩放或适配不同设备时,px 会卡死字号,无法随根元素或视口变化。它适合固定像素精度的场景(比如图标内文字、UI 控件微调),但不适合正文、标题等需弹性排版的内容。

常见错误现象:font-size: 16px 在小屏手机上挤成一团,用户双指放大后文字和布局错位;或者在系统强制放大字体(如 Windows 高对比度模式、iOS「更大字体」设置)下完全不响应。

  • 移动端 H5 页面里全用 px 写正文 → 用户缩放失效,可访问性直接掉线
  • CSS 自定义属性(--base-font-size)配合 px 赋值 → 后续无法用 em/rem 做相对计算
  • px 设置 htmlfont-size 再配 rem → 失去动态调整意义,白搭

em 和 rem 的核心区别在哪

em 是相对于父元素 font-size 计算,嵌套越深越容易失控;rem 只认 html 元素的 font-size,是真正意义上的“根相对”。别被“em 更灵活”误导——它灵活得让人头疼。

使用场景:rem 是响应式字号的事实标准;em 仅建议用于局部缩放,比如按钮内图标和文字的等比缩放(icon { font-size: 0.8em; })。

立即学习前端免费学习笔记(深入)”;

MyMap AI
MyMap AI

使用AI将想法转化为图表

下载
  • .card { font-size: 1.2em; },而它的父级是 1.5rem → 实际计算是 1.5rem × 1.2,再向上找父级的 font-size,链式依赖极难追踪
  • rem 但忘了重置 html 的默认字号(Chrome 是 16px)→ 所有 1rem 默认等于 16px,改了设计稿基准(比如按 10px = 1rem)却不改 html → 全站字号错乱
  • 媒体查询中用 em 做断点(@media (min-width: 30em))→ 这里的 em 是基于浏览器默认字号(16px),不是当前上下文,所以是安全的,但容易误解

怎么让 rem 真正适配不同屏幕

靠 JS 动态设 htmlfont-size 是最稳的路,CSS 的 clamp() 或媒体查询只能覆盖有限区间,且无法响应系统字体设置。

关键不是“怎么算”,而是“以谁为基准”。推荐以设计稿宽度(如 375px)对应一个基准 rem 值(如 1rem = 10px),然后按比例缩放:

document.documentElement.style.fontSize = 
  document.documentElement.clientWidth / 375 * 10 + 'px';
  • 别在 DOMContentLoaded 里只执行一次 → 屏幕旋转、分屏、缩放时要重新计算,加 resize 监听,但记得防抖
  • clientWidth 不用 innerWidth → 排除滚动条宽度干扰,更准
  • 如果项目已用 postcss-pxtorem,确保插件的 rootValue 和 JS 里设的基准一致,否则编译后和运行时不匹配

字体单位混用时最容易翻车的点

混用本身没问题,但边界必须清晰。最常崩的是把 emrem 用,或在 transform: scale() 容器里还用 em 控制字号 —— 此时 em 会叠加缩放,结果不可控。

  • body { font-size: 1.125em; } 放在未重置 html 的页面里 → 基于浏览器默认 16px,变成 18px,后续所有 rem 都偏大
  • vw 写标题字号(font-size: 4.5vw)+ rem 写正文 → 行高、间距若仍用 rem,视觉节奏会断裂
  • Flex 容器设了 font-size: 0.875em,子元素又用 1.5em → 实际是父级字号的 1.5 倍,不是设计稿的 1.5 倍,还原失真

复杂点不在换算公式,而在谁控制谁、何时继承、是否被 transform 干扰 —— 看渲染前的 computed style,比背规则管用。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1017

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

814

2023.11.06

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

514

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

678

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5909

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

492

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

0

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 38.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号