实现跨浏览器字体大小缩放的一种常用方式是使用相对单位 rem。rem 表示根据根元素的字体大小来确定具体的字体大小。在 CSS 中,可以通过设置根元素的字体大小来影响整个页面的字体大小。例如,设置根元素的字体大小为 16px:
html {
font-size: 16px;
}
然后,可以使用 rem 单位来设置其他元素的字体大小。例如,设置一个段落的字体大小为 1.2 倍根元素的字体大小:
p {
font-size: 1.2rem;
}
这样,当根元素的字体大小变化时,所有使用 rem 单位设置字体大小的元素都会相应地缩放。
同时,为了兼容老版本的浏览器,可以使用 JavaScript 来检测浏览器是否支持 rem 单位,如果不支持,可以使用 JavaScript 计算出字体大小并手动设置到元素上。
if (!('fontSize' in document.body.style)) {
var baseFontSize = 16; // 假设根元素字体大小为 16px
var setFontSize = function () {
var width = document.documentElement.clientWidth || document.body.clientWidth;
var fontSize = (width / 375) * baseFontSize; // 假设设计稿宽度为 375px
document.documentElement.style.fontSize = fontSize + 'px';
};
setFontSize();
window.addEventListener('resize', setFontSize);
}
在这个例子中,如果浏览器不支持 fontSize 属性,则使用 JavaScript 计算出字体大小并设置到根元素上。其中,假设设计稿宽度为 375px,根据设计稿宽度和根元素字体大小,可以计算出在当前浏览器窗口宽度下应该设置的字体大小。随后,设置到根元素上并监听 resize 事件,在窗口大小变化时重新计算字体大小并设置到根元素上。
需要注意的是,使用 rem 单位设置字体大小时,应该避免在嵌套的元素中重复设置字体大小,以免出现不必要的缩放效果。同时,在使用 JavaScript 计算字体大小时,也应该考虑到浏览器窗口大小变化时的缩放问题,以得到更好的用户体验。