2017-02-13 20 views
0

我有隐藏/显示内嵌框架(外部页面通过CGI显示文本列 - 从左到右显示)的当前代码,通过页面顶部的按钮。现在,iframe使用绝对定位,但我希望他们'重新排序'并根据所显示的隐藏位置来更改位置。 EX:如果只显示2个iframe,则会减少占用的左右空间。 这很重要,因为我一次只能添加比页面更多的内容。 (另外,我在页面加载试图改变的Jscript到默认隐藏的一切,而不是显示)通过隐藏/显示重新定位内联框架

function myFunctionui() { 
 

 
     var x = document.getElementById('ui'); 
 

 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    } 
 

 
    function myFunctiontic() { 
 
     var x = document.getElementById('tic'); 
 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    } 
 

 
    function myFunctionlab() { 
 
     var x = document.getElementById('lab'); 
 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    } 
 

 
    function myFunctionzone1_4() { 
 
     var x = document.getElementById('zone1_4'); 
 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    } 
 

 
    function myFunctionzone5() { 
 
     var x = document.getElementById('zone5'); 
 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    } 
 

 
    function myFunctionslas() { 
 
     var x = document.getElementById('slas'); 
 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    } 
 

 
    function myFunctionhiks() { 
 
     var x = document.getElementById('hiks'); 
 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    }
body, 
 
html { 
 
    margin: 0; 
 
    padding: 0; 
 
    height: 100%; 
 
    overflow: hidden; 
 
} 
 
#tic { 
 
    position: absolute; 
 
    left: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    top: 60px; 
 
} 
 
#lab { 
 
    position: absolute; 
 
    left: 220; 
 
    right: 0; 
 
    bottom: 0; 
 
    top: 60px; 
 
} 
 
#zone1_4 { 
 
    position: absolute; 
 
    left: 420; 
 
    right: 0; 
 
    bottom: 0; 
 
    top: 60px; 
 
} 
 
#zone5 { 
 
    position: absolute; 
 
    left: 630; 
 
    right: 0; 
 
    bottom: 0; 
 
    top: 60px; 
 
} 
 
#slas { 
 
    position: absolute; 
 
    left: 840; 
 
    right: 0; 
 
    bottom: 0; 
 
    top: 60px; 
 
} 
 
#hiks { 
 
    position: absolute; 
 
    left: 1050; 
 
    right: 0; 
 
    bottom: 0; 
 
    top: 60px; 
 
} 
 
iframe { 
 
    overflow: scroll; 
 
    height: 100%; 
 
    seamless; 
 
    border: 0; 
 
}
<button onclick="myFunctionui()">^</button> 
 

 
<div id="ui"> 
 
    <button onclick="myFunctiontic()">TICs</button> 
 
    <button onclick="myFunctionlab()">LABs</button> 
 
    <button onclick="myFunctionzone1_4()">ZONE 1-4</button> 
 
    <button onclick="myFunctionzone5()">ZONE 5</button> 
 
    <button onclick="myFunctionslas()">SLAS</button> 
 
    <button onclick="myFunctionhiks()">HIKS</button> 
 
</div> 
 

 

 
<div id="tic"> 
 
    <iframe src="https://itcrops.itap.purdue.edu/opstools/ticstatus/ticstatus.cgi" width="130" frameborder="0"></iframe> 
 
</div> 
 
<div id="lab"> 
 
    <iframe src="https://itcrops.itap.purdue.edu/opstools/labstatus/labstatus.cgi" width="130" frameborder="0"></iframe> 
 
</div> 
 
<div id="zone1_4"> 
 
    <iframe src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/lastations1_4.cgi" width="250" frameborder="0"></iframe> 
 
</div> 
 
<div id="zone5"> 
 
    <iframe src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/lastations5.cgi" width="250" frameborder="0"></iframe> 
 
</div> 
 
<div id="slas"> 
 
    <iframe src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/slastations.cgi" width="250" frameborder="0"></iframe> 
 
</div> 
 
<div id="hiks"> 
 

 
    <iframe src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/hiksstations.cgi" width="250" frameborder="0"></iframe> 
 

 
</div>

+0

难道他们要的位置是:绝对的? –

+0

nope,我只是暂时做了这些,我不知道如何让它们互相堆叠在一起 –

+0

为什么body和html溢出:hidden? –

回答

1

我想通了。

首先,摆脱position:absolute的想法,因为有一个更简单的方法来解决这个问题。

此外,不要将iframe包装在div s中。 Div是块元素,这意味着他们会故意打破一条线,但iframe是内联的,这意味着只有当行到达屏幕的末尾时才会断行,正如您在该答案的字词中所看到的那样。 (但是,如果你想要,你可以将所有的iframe包装在一个div中。)

我建议你为html和body删除overflow: hidden,以便更小的屏幕可以看到你想要的。

您需要的唯一CSS就是iframe:white-space: nowrap,以便线条永不断裂,#iframeContainer {display: none},因为您希望默认情况下的所有内容都与其子iframe相同。

您的JavaScript存在问题,可以很容易地修复。正如我前面提到的,iframe是内联的。但是,在您的功能中,如果按钮在其显示为“无”时被点击,则说它们使其“阻止”。要解决这个问题,只需将“block”改为“inline”即可。 (注意:我保留了“ui”“block”,因为你只是想并排使用iframe)。另外,为了解决我遇到的错误,请将基于显示的if语句改为“inline” “无”。例如,写if (x.style.display === 'inline') {x.style.display = 'none';} else {x.style.display = 'inline'};而不是if (x.style.display === 'none') {x.style.display = 'inline';} else {x.style.display = 'none';}。另外,为了修复加载时无显示的错误,只需将document.getElementById("iframeContainer").style.display = "block";添加到if else语句之外的每个函数。

看看这个片段,清楚地看到我的意思。 (它的工作原理!)

var frameContainer = document.getElementById("iframeContainer"); 
 
function myFunctionui() { 
 

 
     var x = document.getElementById('ui'); 
 

 
     if (x.style.display === 'none') { 
 
     x.style.display = 'block'; 
 
     } else { 
 
     x.style.display = 'none'; 
 
     } 
 
    } 
 

 
    function myFunctiontic() { 
 
     var x = document.getElementById('tic'); 
 
     if (x.style.display === 'inline') { 
 
     x.style.display = 'none'; 
 
     } else { 
 
     x.style.display = 'inline'; 
 
     } 
 
     frameContainer.style.display = "block"; 
 
    } 
 

 
    function myFunctionlab() { 
 
     var x = document.getElementById('lab'); 
 
     if (x.style.display === 'inline') { 
 
     x.style.display = 'none'; 
 
     } else { 
 
     x.style.display = 'inline'; 
 
     } 
 
     frameContainer.style.display = "block"; 
 
    } 
 

 
    function myFunctionzone1_4() { 
 
     var x = document.getElementById('zone1_4'); 
 
     if (x.style.display === 'inline') { 
 
     x.style.display = 'none'; 
 
     } else { 
 
     x.style.display = 'inline'; 
 
     } 
 
     frameContainer.style.display = "block"; 
 
    } 
 

 
    function myFunctionzone5() { 
 
     var x = document.getElementById('zone5'); 
 
     if (x.style.display === 'inline') { 
 
     x.style.display = 'none'; 
 
     } else { 
 
     x.style.display = 'inline'; 
 
     } 
 
     frameContainer.style.display = "block"; 
 
    } 
 

 
    function myFunctionslas() { 
 
     var x = document.getElementById('slas'); 
 
     if (x.style.display === 'inline') { 
 
     x.style.display = 'none'; 
 
     } else { 
 
     x.style.display = 'inline'; 
 
     } 
 
     frameContainer.style.display = "block"; 
 
    } 
 

 
    function myFunctionhiks() { 
 
     var x = document.getElementById('hiks'); 
 
     if (x.style.display === 'inline') { 
 
     x.style.display = 'none'; 
 
     } else { 
 
     x.style.display = 'inline'; 
 
     } 
 
     frameContainer.style.display = "block"; 
 
    }
#iframeContainer {white-space: nowrap; display: none;} 
 
#iframeContainer iframe {display: none;}
<button onclick="myFunctionui()">^</button> 
 

 
<div id="ui"> 
 
    <button onclick="myFunctiontic()">TICs</button> 
 
    <button onclick="myFunctionlab()">LABs</button> 
 
    <button onclick="myFunctionzone1_4()">ZONE 1-4</button> 
 
    <button onclick="myFunctionzone5()">ZONE 5</button> 
 
    <button onclick="myFunctionslas()">SLAS</button> 
 
    <button onclick="myFunctionhiks()">HIKS</button> 
 
</div> 
 

 
<div id="iframeContainer"> 
 

 
    <iframe id="tic" src="https://itcrops.itap.purdue.edu/opstools/ticstatus/ticstatus.cgi" width="130" frameborder="0"></iframe> 
 
    <iframe id="lab" src="https://itcrops.itap.purdue.edu/opstools/labstatus/labstatus.cgi" width="130" frameborder="0"></iframe> 
 
    <iframe id="zone1_4" src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/lastations1_4.cgi" width="250" frameborder="0"></iframe> 
 
    <iframe id="zone5" src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/lastations5.cgi" width="250" frameborder="0"></iframe> 
 
    <iframe id="slas" src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/slastations.cgi" width="250" frameborder="0"></iframe> 
 
    <iframe id="hiks" src="https://itcrops.itap.purdue.edu/opstools/pr/Dev/lastat/hiksstations.cgi" width="250" frameborder="0"></iframe> 
 

 
</div>

+0

优秀!你修好了! –