Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html CSS使iframe占据页面的其余高度?_Html_Css_Xhtml_Iframe - Fatal编程技术网

Html CSS使iframe占据页面的其余高度?

Html CSS使iframe占据页面的其余高度?,html,css,xhtml,iframe,Html,Css,Xhtml,Iframe,如果我有这样的东西: <p>Element<p> <iframe src = "otherPage.html" style = "width:100%;height:100%"> </iframe> 元素 iframe将从页面上消失。由于各种原因,我无法指定绝对高度。让元素使用其容器元素的剩余高度的正确CSS方法是什么?谷歌的快速搜索声称这是不可能的,但肯定有解决办法。这里的内部iframe有一个渐变,这是由于IE无法显示清晰的iframe背景

如果我有这样的东西:

<p>Element<p>
<iframe src = "otherPage.html" style = "width:100%;height:100%">
</iframe>
元素
iframe将从页面上消失。由于各种原因,我无法指定绝对高度。让元素使用其容器元素的剩余高度的正确CSS方法是什么?谷歌的快速搜索声称这是不可能的,但肯定有解决办法。这里的内部iframe有一个渐变,这是由于IE无法显示清晰的iframe背景,必须占据页面的其余部分


想法?

这个问题重复了这么多次:)

您可以使用javascript实现这一点:

此脚本取自并经过修改: (只需记住br指定
var iframeids=[“任何要自动调整大小的帧id,以“.”分隔即可]


/***********************************************
*IFrame SSI脚本II-©动态驱动器DHTML代码库(http://www.dynamicdrive.com)
*访问DynamicDrive.com了解数百个原始DHTML脚本
*此通知必须保持完整,以便合法使用
***********************************************/
//输入要动态调整大小以匹配其内容高度的iFrame的ID:
//用逗号分隔每个ID。示例:[“myframe1”、“myframe2”]或[“myframe”]或[]表示无:
变量iframeids=[“contentFrame”]
//脚本是否应在不支持此脚本的浏览器(非IE5+/NS6+浏览器。推荐)中隐藏iframe:
var iframehide=“否”
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf(“Firefox”)).split(“/”[1]
var ffextrahweight=parseFloat(getFFVersion)>=0.1?16:0//在FireFox 1.0+浏览器中添加到iframe的额外高度
函数resizeCaller(){
var dyniframe=新数组()
对于(i=0;i

我建议使用其他方法在页面上包含外部内容。据我所知,如果框架没有被搜索引擎索引,有些用户甚至可能会一起禁用框架。我建议使用
标记。CSS中没有干净的方法来实现这一点,javascript解决方案是..有点像试图压扁buEirik:我会的,但是Linux已经坏了,当我的页面加载时会使firefox崩溃,但只有在启用SELinux或类似的防火墙策略的情况下。使用iframe来模拟我以前进行的ajax调用,我才不会崩溃。@Duroth:你会如何使用表标记呢?我看不到1:1。这是有史以来最糟糕的解决方案.是的,我同意!但是我认为不可能在CSS中这样做,也不可能让它跨浏览器兼容:/…是的。这就是为什么我给了你接受,但我拒绝向上投票!如果我可以在不向下重复的情况下向下投票,我会!
<script type="text/javascript" language="javascript">

    /***********************************************
    * IFrame SSI script II- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
    * Visit DynamicDrive.com for hundreds of original DHTML scripts
    * This notice must stay intact for legal use
    ***********************************************/

    //Input the IDs of the IFRAMES you wish to dynamically resize to match its content height:
    //Separate each ID with a comma. Examples: ["myframe1", "myframe2"] or ["myframe"] or [] for none:
    var iframeids = ["contentFrame"]

    //Should script hide iframe from browsers that don't support this script (non IE5+/NS6+ browsers. Recommended):
    var iframehide = "no"

    var getFFVersion = navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
    var FFextraHeight = parseFloat(getFFVersion) >= 0.1 ? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

    function resizeCaller() {
        var dyniframe = new Array()
        for (i = 0; i < iframeids.length; i++) {
            if (document.getElementById)
                resizeIframe(iframeids[i])
            //reveal iframe for lower end browsers? (see var above):
            if ((document.all || document.getElementById) && iframehide == "no") {
                var tempobj = document.all ? document.all[iframeids[i]] : document.getElementById(iframeids[i])
                tempobj.style.display = "block"
            }
        }
    }

    function resizeIframe(frameid) {
        var currentfr = document.getElementById(frameid)
        if (currentfr && !window.opera) {
            currentfr.style.display = "block"
            if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
                currentfr.height = currentfr.contentDocument.body.offsetHeight + FFextraHeight;
            else if (currentfr.contentDocument && currentfr.contentDocument.documentElement.offsetHeight) //ns6 syntax
                currentfr.height = currentfr.contentDocument.documentElement.offsetHeight + FFextraHeight;
            else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
                currentfr.height = currentfr.Document.body.scrollHeight;
            else if (currentfr.Document && currentfr.Document.documentElement.scrollHeight) //ie5+ syntax
                currentfr.height = currentfr.Document.documentElement.scrollHeight;
            if (currentfr.addEventListener)
                currentfr.addEventListener("load", readjustIframe, false)
            else if (currentfr.attachEvent) {
                currentfr.detachEvent("onload", readjustIframe) // Bug fix line
                currentfr.attachEvent("onload", readjustIframe)
            }
        }
    }

    function readjustIframe(loadevt) {
        var crossevt = (window.event) ? event : loadevt
        var iframeroot = (crossevt.currentTarget) ? crossevt.currentTarget : crossevt.srcElement
        if (iframeroot)
            resizeIframe(iframeroot.id);
    }

    function loadintoIframe(iframeid, url) {
        if (document.getElementById)
            document.getElementById(iframeid).src = url
    }

    if (window.addEventListener)
        window.addEventListener("load", resizeCaller, false)
    else if (window.attachEvent)
        window.attachEvent("onload", resizeCaller)
    else
        window.onload = resizeCaller

</script>