前端实现iframe响应式布局,让网页等比例缩放

2 篇文章 0 订阅
1 篇文章 0 订阅

在项目开发中,有一种业务场景,很让人头疼,如何实现iframe响应式布局?

简单说, 就是有这样一个需求,在一个小的页面下嵌套另一个网页,并且让所嵌套的网页以缩小的形式呈现,这种情况下应该怎么实现?

初用iframe是下面的效果

<div class="box">
        <iframe 
            width="600" 
            height="420" 
            scrolling="yes"
            src="https://www.csdn.net/" 
            frameborder="0"
            >
        </iframe>
    </div>

效果如下:

效果图

iframe实现响应式缩放实现思路

1.给iframe添加一层父元素,父元素设置相对定位和溢出隐藏
2.子元素加绝对定位,并设置页面缩放比例
3.调整子元素大小,移动子元素位置,使之与父元素贴合

<style>
        .box {
            position: relative;
            overflow: hidden;
            width: 600px;
            height: 420px;
            margin: 0 auto;
            border: 1px solid black;       
        }
        
        iframe {
            position: absolute;
            transform: scale(0.4);
            left: -480px;
            top: -310px;
        }
    </style>
<div class="box">
        <iframe 
            width="260%" 
            height="250%" 
            scrolling="yes"
            src="https://www.csdn.net/" 
            frameborder="0"
            >
        </iframe>
    </div>

效果如下

在这里插入图片描述
缩放的比例,页面的大小都是可以根据需求调整的,so easy!

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 iframe实现内部网页的等比例缩放,可以使用 CSS transform 属性的 scale() 函数。具体步骤如下: 1. 在 iframe 中嵌入网页,并设置一个 ID。 ```html <iframe id="myFrame" src="https://www.example.com"></iframe> ``` 2. 在 CSS 中定义该 iframe 的样式,并设置宽度和高度。注意,这里的宽度和高度应该是你希望 iframe 显示的大小,而不是网页本身的大小。 ```css #iframe { width: 500px; height: 300px; } ``` 3. 使用 JavaScript 获取 iframe 的内容窗口(contentWindow)和文档对象(document)。 ```javascript var myFrame = document.getElementById("myFrame"); var contentWindow = myFrame.contentWindow; var contentDoc = contentWindow.document; ``` 4. 在 contentDoc 的 head 标签中添加一个样式表,用于对网页进行缩放。这里的样式表将会把网页的根元素(通常是 body)缩放到与父元素(即 iframe)相同的比例。 ```javascript var style = contentDoc.createElement("style"); style.type = "text/css"; style.innerHTML = "html,body {transform-origin: top left; transform: scale(" + (myFrame.offsetWidth / contentDoc.body.offsetWidth) + ");}"; contentDoc.head.appendChild(style); ``` 5. 当 iframe 加载完成后,执行上述代码即可实现内部网页的等比例缩放。 完整代码如下: ```html <iframe id="myFrame" src="https://www.example.com"></iframe> ``` ```css #iframe { width: 500px; height: 300px; } ``` ```javascript var myFrame = document.getElementById("myFrame"); var contentWindow = myFrame.contentWindow; var contentDoc = contentWindow.document; contentWindow.onload = function() { var style = contentDoc.createElement("style"); style.type = "text/css"; style.innerHTML = "html,body {transform-origin: top left; transform: scale(" + (myFrame.offsetWidth / contentDoc.body.offsetWidth) + ");}"; contentDoc.head.appendChild(style); }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值