页面嵌套iframe后rem失效

最近在一个页面嵌套使用了iframe之后,发现iframe嵌套的页面样式乱了,但是页面样式都应用上了,查看元素之后发现,嵌套的iframe里面的html并没有动态的设置上font-size,它也没有应用外面的htmlfont-size大小,还是iframe自身默认rem值即1rem=16px,所以解决办法是给iframe里面的html也动态设置上font-size,但前提是必须在页面加载完成才有效即window.onload里面.

未设置之前

iframe

设置iframe中html的font-size大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<iframe src="./test.html" frameborder="0" width="100%" height="100%" id="myIframe"></iframe>
<script>
//等比缩放
!(function(doc, win) {
var timer,
docEle = doc.documentElement,
evt = "onorientationchange" in window ? "orientationchange" : "resize",
setFontSize = function() {
var width = docEle.getBoundingClientRect().width;
width && (docEle.style.fontSize = 20 * (width / 320) + "px");
// iframe的html元素font-size设置 必须在加载完成去设置
win.onload = function() {
myIframe.contentWindow.document.documentElement.style.fontSize = width / 16 + "px"
}
};
win.addEventListener(evt, function() {
clearTimeout(timer);
timer = setTimeout(setFontSize, 1000);
}, false);
setFontSize()
doc.addEventListener("DOMContentLoaded", setFontSize, false);
}(document, window));
</script>

设置之后

iframe

-------------本文结束感谢您的阅读-------------
0%