直接在标签用style设字号虽能生效但不推荐,因它绕过css层叠与继承,导致h1-h6、表单控件继承异常,响应式和暗色模式难适配,且干扰rem基准。

直接在 标签上用 style 属性设字号(比如 style="font-size: 16px;")能生效,但不推荐用于正式项目——它绕过了 CSS 层叠和继承机制,后续调整、适配响应式或暗色模式时会卡住。
为什么 body 的内联 font-size 容易出问题
浏览器渲染时, 确实会让子元素(如 <p></p>)按这个值继承,但以下情况会失效或反直觉:
-
<h1></h1>到<h6></h6>默认是em或rem倍数,比如h1 { font-size: 2em; },此时它基于的是根元素()的字号,不是的——内联设在body上对它们基本没影响 - 表单控件(
<input>、<select></select>)在多数浏览器里不继承body的font-size,它们有自己的 UA 样式,优先级更高 - 媒体查询中无法单独覆盖内联样式,必须加
!important,污染性极强 - 如果页面用了
rem布局,根字号通常设在上,body内联字号反而造成基准混乱
font-size 放在 <style></style> 块里更可控
把字号声明移到 里的 <style></style>,能确保被所有后代元素(包括表单)更稳定地继承,也方便后续覆盖:
<style>
body {
font-size: 16px;
line-height: 1.5;
}
/* 强制表单继承 */
input, select, textarea {
font: inherit;
}
</style>
- 用
font: inherit而不是只写font-size: inherit,因为表单控件需要同时继承字号、字重、字体族 - 如果目标是响应式字号,别硬写死
16px,改用1rem并在上统一控制根字号 - 注意:Chrome 和 Safari 对
font: inherit在<button></button>上的支持稍弱,必要时单独补一句button { font-size: 100%; }
真正影响全局字号的其实是 元素
现代网页中, 才是 rem 的计算基准。设在这里,才能一揽子控制所有相对单位:
<style>
html {
font-size: 16px; /* 基准 */
}
@media (max-width: 768px) {
html {
font-size: 14px; /* 小屏缩一点 */
}
}
body {
font-size: 1rem; /* 此时就是 16px 或 14px */
}
</style>
-
的font-size不会被任何父元素继承(它就是根),所以设在这里最干净 - 用户系统缩放(如 Windows 的 125% 缩放)会影响
1rem的实际像素值,这是预期行为;而固定px值会绕过系统缩放,对可访问性不友好 - 如果你发现字号没变,先检查是否误把样式写在了
后面却没加<style></style>标签,或者被其他 CSS 规则用更高优先级覆盖了
真正麻烦的不是“怎么设”,而是设在哪、谁继承、谁不继承、以及缩放和响应式怎么联动——这些细节不厘清,光改 只会让后面的人更难接手。











