让iframe自适应高度-真正解决

摘要:
方法1:变量=文档。按ID获取元素;ifm.height=文档.documentElement。客户身高这种方法可以实现iframe自适应高度的效果,但如果放大或缩小窗口,效果不会出来,这是本文的开始。那就有问题了。我们需要解决当窗口改变大小时执行js事件的问题,以便iframe能够适应高度。因此,使用方法2可以完美而真实地使iframe自适应。尝试一下,它与多种浏览器兼容。

需求:实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象。 (需要只有iframe出现滚动条)

本人一开始这么写:会造成只有主页面加载是设定一次。但是窗体变小或变大后不会触发。

 $(function setIframeHeight() {
        var iframe ;//高度初始化600,为了14寸笔记本
        iframe =document.getElementById('mainiframe');
        iframe.height=document.getElementById("sidebar").offsetHeight-56;

//        if (iframe) {
//            var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
//            if (iframeWin.document.body) {
//                iframe.height = iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
//            }
//        }
    })

转:真正的让iframe自适应高度 兼容多种浏览器随着窗口大小改变 - CSDN博客--摘录在下方
http://blog.csdn.net/alex8046/article/details/51456131

今天有朋友问到我关于“iframe自适应高度”的问题,原本以为是很简单的问题,没想到折腾了20分钟才搞定。期间遇到几个问题,要么是高度自适应了,但是当窗口改变时会出现滚动条。也就是当窗口放大时iframe没有自动跟随变大显得很小,或是当窗口缩小时iframe还是之前那么大就出现了滚动条。还有或是高度不准确,那么就达不到想要的效果了。

让iframe自适应高度-真正解决第1张

为什么需要使用iframe自适应高度呢?其实就是为了美观,要不然iframe和窗口长短大小不一,看起来总是不那么舒服,特别是对于我们这些编程的来说,如鲠在喉的感觉。

首先设置样式

body{margin:0; padding:0;}

如果不设置body的margin和padding为0的话,页面上下左右会出现空白。

html代码如下

<iframe src="http://www.fulibac.com" scrolling="no" frameborder="0"></iframe>

下面就是今天小编写的时候遇到的问题,考虑到有些朋友可能没怎么用jquery就直接用js吧。

方法一

var ifm= document.getElementById("myiframe");

ifm.height=document.documentElement.clientHeight;

这个方法可以达到让iframe自适应高度的效果,但是如果你将窗口放大或缩小效果就不出来了,也就是本文开头讲的。需要再次刷新,那就不属于自适应了。

那么问题来了,需要解决当窗口改变大小的时候执行js事件,以让iframe自适就高度。那么就需要将相关的代码写成函数,并且给iframe加上onLoad="changeFrameHeight()",也就是下面的方法二了。

方法二

<iframe src="http://www.fulibac.com" scrolling="no" onload="changeFrameHeight()" frameborder="0"></iframe>

js代码也得跟着改

function changeFrameHeight(){
    var ifm= document.getElementById("iframepage"); 
    ifm.height=document.documentElement.clientHeight;

}

window.onresize=function(){  
     changeFrameHeight();  

window.onresize的作用就是当窗口大小改变的时候会触发这个事件。

所以,使用方法二就可以完美的、真正的让iframe自适应高度了,试试看吧,并且兼容多种浏览器。

==上面摘录结束

====本人修改为:(方法1)

<iframe id="mainiframe" width="100%" height="600" src="/dsdd/confirm/" onload="changeFrameHeight()" frameborder="0" scrolling="auto"></iframe>
    function changeFrameHeight(){
        var ifm= document.getElementById("mainiframe");
        ifm.height=document.documentElement.clientHeight-56; //56是头顶的高度,和网友估计不一样。
    }
    $(function(){ window.onresize=function(){
            changeFrameHeight(); }}); //这里不知道是否还要 $(function(){}) 这个闭包吗?后证实不需要

 但要保留  window.onresize=function(){ changeFrameHeight();}

==本人 方法2  html去掉每次iframe onload都触发计算高度,更妙 ;推荐

 <iframe id="mainiframe" width="100%" height="600" src="/dsdd/confirm/"  frameborder="0" scrolling="auto"></iframe>
  function changeFrameHeight(){
        var ifm= document.getElementById("mainiframe");
        ifm.height=document.documentElement.clientHeight-56;
    }
    window.onresize=function(){ changeFrameHeight();}
    $(function(){changeFrameHeight();});

特别声明: changeFrameHeight() 方法里面的计算高度要结合你的布局,并不是网上都合适你的。并且这个只有一个iframe

比如:下面的里面有很多方法,有点头晕。^_^

关于iframe自适应高度的方法总结 - CSDN博客
http://blog.csdn.net/hj7jay/article/details/51675692

让iframe自适应高度-真正解决第2张

免责声明:文章转载自《让iframe自适应高度-真正解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)代码2打开WORD文档时提示“word无法启动转换器mswrd632 wpc”的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

手机端自适应字体大小和元素宽度自适应

以前在做手机端页面时候通过媒体查询的方法定义字体或者宽高。 这样看设计稿切图时一切字体大小、内容宽度全靠感觉去定义,media定义好之后,拿起键盘就是干。 字体、宽高都用rem来定义,此方法略爽! @media (min-0px){ html{font-size:12px;} } @media (min- 320px){ html{...

前端自适应----单位rem

下边是大神对《移动前端自适应解决方案和比较》的链接: 移动前端自适应解决方案和比较 通过使用,自我感觉网易的解决方案是最方便我们使用时候的计算。 代码: (function(factory){ factory(); window.addEventListener('resize',factory,false); }(function(){...

iframe高度自适应的6个方法

原文链接:http://caibaojian.com/iframe-adjust-content-height.html JS自适应高度,其实就是设置iframe的高度,使其等于内嵌网页的高度,从而看不出来滚动条和嵌套痕迹。对于用户体验和网站美观起着重要作用。 如果内容是固定的,那么我们可以通过CSS来给它直接定义一个高度,同样可以实现上面的需求。当内容是...

[转]UILabel自适应大小

当内容不足以将整个Label占满的时候,可以将Label中的内容顶部对齐显示,并自适应大小。 1、给myLabel标签内填充文本 Ios代码 myLabel.text=@"thetextwillfillthelabel"; 2、设置myLabel的最大显示行数(0表示不限) Ios代码 myLabel.numberOfLines=0; 3、设置...

Delphi 实现窗体自适应调整尺寸以适应不同屏幕分辩率的显示问题

给你一段代码,网上转的:unit uMyClassHelpers;//实现窗体自适应调整尺寸以适应不同屏幕分辩率的显示问题。//        陈小斌,2012年3月5日interfaceUses  SysUtils,Windows,Classes,Graphics, Controls,Forms,Dialogs, Math,typinfo;//  uMy...

[转]如何让Android字体自适应屏幕分辨率

本文转自:http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html 在不同的分辨率下,Android字体大小怎么自适应分辨率的变化? 假设需要适应320x240,480x320分辨率。在res目录下新建文件夹values-320x240,values-480x320。然后在文件夹values...