自动执行此操作可能有些棘手。字体大小百分比是根据基值完成的,该基值是父块的字体大小。这意味着字体大小的变化是这样嵌套的:
<div style="font-size: 16px;">
This text has size 16px.
<div style="font-size: 150%;">
This text has size 150% * 16px = 24px.
<div style="font-size: 150%;">
Because this div is nested, the base value is now 24px.
font-size: 100% would mean 24px type.
So the size of the text here is 150% * 24px = 36px.
</div>
</div>
</div>
而那意味着几乎可以肯定没有简单的解决方案。
如果您可以绝对确定没有任何嵌套百分比的位置(如我上面的示例),您可以简单地将所有百分比替换为基本字体大小乘以百分比。
如果您确实有很多不同的页面,那么您可能无法依赖它。在这种情况下,您将不得不进行一些 HTML/CSS 解析并浏览所有页面,计算每个元素的字体大小以使其正确。不幸的是,没有一个简单的解决方案。
不过,我需要问一下,您为什么需要这样做?只要您以像素为单位(在正文标记中)声明页面的基本字体大小,百分比字体大小和绝对字体大小之间就没有功能差异。如果你的 body 有这样的字体声明:
body {
font: 100% font1, font2;
}
然后将其替换为:
body {
font: 16px font1, font2;
}
除非您有一些非常不寻常的要求,否则它可以像替换整个页面的所有字体大小声明一样工作。
(16px 是网络浏览器几乎通用的默认字体大小。)