css - 将字体大小设置为 1em 是否有意义?
问题描述
我正在审查最初由外部商店开发然后在内部进行大量修改的级联样式表。我们正在尝试对其进行一些优化,以删除在此期间引入的一些特殊情况和变通方法,我注意到许多样式中有一些奇怪的地方:
element {
font-size:1em;
}
在这里,element
不是字面意思;它是一些任意元素名称、类名等。
我相信以下是真实的:
- 除非另有说明,否则
font-size
继承自父元素 - 电流
font-size
可以表示为1em
,1ex
,1ch
, 或100%
这意味着这font-size:1em
与根本不指定字体大小完全相同,对吧?
在文件的最顶部,有这个定义:
*,* * {
font-size: 1em;
}
这也特别不做任何事情,但对所有元素都有作用。
如果没有font-size:1em
,我可能会看到一个潜在的问题:字体大小变化失控。如果我有:
span.larger {
font-size:larger;
}
那么这可能会使文本增加很多:
<span class="larger">
This text is a little bigger
<span>and bigger
<span>and bigger</span>
</span>
</span>
但它实际上并非如此:font-size:larger
仅适用于外部跨度而不是那些内部跨度。计算的字体大小是继承的,而不是字体大小的定义(这会导致失控的.
我使用了诸如 Firefox 的检查器、Chrome 的开发工具等浏览器工具来禁用这些样式似乎并没有改变页面的外观,但我还没有对整个网站进行详尽的审查。
我错过了什么吗?或者我可以简单地删除所有实例
font-size:1em
?
更新 我显然错过了当你用字体大小和嵌套元素做一些更复杂的事情时会发生什么:
div {
font-size:1.5em;
}
<div>
Bigger
<div>
and bigger
<div>etc.</div>
</div>
</div>
这会导致失控膨胀。这有点病态,因为将所有div
s 定义为大于其父母可能不是您想要做的。但是嵌套列表例如ol ol ol
肯定会导致问题。
那么,这种结构是防止字体大小失控增加的预防措施吗?
* * {
font-size:1em;
}
解决方案
大概吧。
真的,如果你想保持所有字体一致,我似乎有人使用rem
基于 html 字体大小的字体,那么你就不会有你的 embiggenning 问题。
一般来说,我认为在 css 中使用被认为是不好的做法*
,更不用说使用* *
推荐阅读
- php - 如何正确解析 API 响应
- angular - 具有切换值的多个复选框
- javascript - 仪表板仅更改内容而无需重新加载整页
- html - 尽管给出了最小值和最大值,但我想限制用户仅输入 0 到 28 的数字
- unity3d - 如何测量一些预制件范围?
- oracle - OSB 11g 安装在检查操作系统认证和检查服务包时失败
- java - 如何在自动完成位置googlemap api中绑定(仅特定位置)
- css - 为什么 Lighthouse 考虑 clip: rect(0 0 0 0) 作为可访问性的有效解决方案
- spring - Spring Boot/Spring Kafka 中的 KafkaTemplate 抛出 NullPointerException
- python - 并行/多处理运行大型 python 脚本