移动端中iframe缩放

问题来源于此,需在移动端页面中嵌入iframe页面,如下图。

iframe页面属于PC页面,无视口缩放,而移动端页面有视口缩放

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
iframe页面受此影响,也会出现放大问题:
<div class="formData">
    <iframe id="iframe" class="ifr" src="./notarizationForm.html" frameborder="0"></iframe>
</div>
<div class="footer-button" style="border-top:1px solid #f2f2f2">
        <button class="button btn-half def">取消预约</button>
        <button class="button btn-half fr">重新预约</button>
    </div>


<div class="formData">
    <iframe id="iframe" class="ifr" src="./notarizationForm.html" frameborder="0"></iframe>
</div>
<div class="footer-button">
     <button>取消预约</button><button>重新预约</button>
</div>
解决以上问题,可考虑引入transform的scale,在iframe加载完成后获取其宽高,并与父元素进行比例换算

let ifr = document.getElementById('iframe')
ifr.onload = function(){
    let wd = ifr.contentWindow.document.documentElement.scrollWidth;
    let ht = ifr.contentWindow.document.documentElement.scrollHeight;
    let x = document.getElementsByClassName('formData')[0].clientWidth / wd;
    ifm.style.width = wd +'px';
    ifm.style.height = ht +'px';
    ifm.style.transform = `scale(${x})`;
    ifm.style.transformOrigin='0 0';
}
出现另外一个问题,

iframe虽然变小了,但实际上的占位并没有改变,真实高度依然达到了1000以上,所以出现很长的滚动条,可以在iframe与父元素中间加入一个容器,用来展示缩小后的iframe,

<div class="formData">
    <div class="box">
        <iframe id="iframe" class="ifr" src="./notarizationForm.html" frameborder="0"></iframe>
    </div>
</div>
let ifr = document.getElementById('iframe')
ifr.onload = function(){
    let wd = ifr.contentWindow.document.documentElement.scrollWidth;
    let ht = ifr.contentWindow.document.documentElement.scrollHeight;
    let x = document.getElementsByClassName('formData')[0].clientWidth / wd;
    ifm.style.width = wd +'px';
    ifm.style.height = ht +'px';
    ifm.style.transform = `scale(${x})`;
    ifm.style.transformOrigin='0 0';
    
    document.getElementsByClassName('box')[0].style.height = ht*x + 'px'
 
}
.formData{
    width: 100%;
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
}
.box{
    width:100%;
    overflow: hidden;
}
如有更好的方法,望赐教

--------------------- 
作者:unnndefined 
来源:CSDN 
原文:https://blog.csdn.net/unnndefined/article/details/79020499?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值