根据屏幕分辨率调整iFrame的高度

时间:2018-11-19 07:09:03

标签: html css iframe

目前,我的HTML网站的每个页面中都有两个iFrame。我希望根据屏幕尺寸调整iFrame的高度。我希望将iFrame的底部放到屏幕底部(在.footer上方),以确保该网站在所有屏幕分辨率下都能呈现,并且iFrame的高度能填满屏幕的其余部分。

我试图将.main和.sideBar的位置设置为相对,并使iFrame的位置为绝对,框架的高度和宽度为100%,但这似乎仍然不起作用。我真的需要帮助才能找到解决此问题的方法。

您可以看到在.frameMain和#newsmyEd的CSS代码中使用固定的最小高度11.4%可以完美地适合我的12英寸计算机的屏幕。iFrame包含在.main和.sideBar中,我已将它们设置为固定高度为5000px。您可以看到,当网站以不同的分辨率显示时,iFrame会缩短,并且不会像我想要的那样向下移动到.footbar的底部。

enter image description here

enter image description here

附上我的代码:

/* Copyright (c) myEd (made by students, for students.) 2018. */

body { /* General Body Properties */
    font-family: Trebuchet MS, Georgia, Helvetica, sans-serif;
    margin: 0;
    overflow: hidden;
}

* { /* Key element to aligning <divs> (DO NOT REMOVE) */
    box-sizing: border-box;
}

#wrapper {
    bottom: 0;
    left: 0;
    overflow: hidden;
    position: absolute;
    right: 0;
    top: 0
}

.header { /* Header properties featuring myEd and school emblems */
    padding: 30px;
    text-align: center; /* Aligns links in the navBar */
    background-image: url(/Default/Img/backgroundHeader-4K.jpg);
    background-size: cover;
    background-repeat: no-repeat;
}

.myEd-reverse {
    width: 240px;
    height: 70px;
    float: left;
    margin-left: -60px;
    margin-top: -40px;
}

.navBar { /* Sticky navBar, either relative or fixed, depending on the scroll position of the site */
    overflow: hidden;
    background-color: #333;
    position: sticky;
    position: -webkit-sticky;
    top: 0;
    z-index: 100000;
}

.navBar a { /* Style the navBar links */
    float: left;
    display: block;
    color: #fff;
    text-align: center;
    padding: 6px 12px;
    text-decoration: none;
}

.navBar a.right { /* Float Quick Links, Help and Log-out navBar directory items to the right of the navBar */
    float: right;
}

.navBar a:hover { /* Change color on hover */
    background-color: #ddd;
    color: #000;
}

.navBar a.active { /* Active Link */
    background-color: #666;
    color: #fff;
}

.modalDialog { /* Modal Properties for all modals in myEd */
	position: fixed;
	font-family: Trebuchet MS, Georgia, Helvetica, sans-serif;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background: rgba(0,0,0,0.8);
	z-index: 99999;
	opacity:0;
	-webkit-transition: opacity 400ms ease-in;
	-moz-transition: opacity 400ms ease-in;
	transition: opacity 400ms ease-in;
	pointer-events: none;
}

.modalDialog:target { /* Modal Properties for all modals in myEd */
	opacity:1;
	pointer-events: auto;
}

.modalDialog > div { /* Modal Properties for all modals in myEd */
	width: 400px;
	position: relative;
	margin: 10% auto;
	padding: 5px 20px 13px 20px;
	border-radius: 10px;
	background: #d7d7d7;
	background: -moz-linear-gradient(#ddd, #666);
	background: -webkit-linear-gradient(#ddd, #666);
	background: -o-linear-gradient(#ddd, #666);
}

.close { /* Modal Properties for all modals in myEd */
	background: #606061;
	color: #FFFFFF;
	line-height: 10px;
	position: absolute;
	right: -5px;
	text-align: center;
	top: -10px;
	width: -5px;
	text-decoration: none;
	font-weight: bold;
	-webkit-border-radius: 12px;
	-moz-border-radius: 12px;
	border-radius: 12px;
	-moz-box-shadow: 1px 1px 3px #000;
	-webkit-box-shadow: 1px 1px 3px #000;
	box-shadow: 1px 1px 3px #000;
}

.close:hover { background: #00d9ff; } /* Modal Properties for all modals in myEd */

.textModalh2 { /* Text preferences of the modal box directed from the navBar */
    margin-top: 18px;
    margin-bottom: -15px;
}

.textModalh5 { /* Text preferences of the modal box directed from the navBar */
    margin-bottom: -15px;
}

.CARTHmodal { /* Image preferences of CARTH in the modal box directed from the navBar */
    border-radius: 50%; 
    height: 130px; 
    width: 120px;
    float: left;
    margin-right: 40px;
    margin-top: 15px
}

.row { /* Alignment between sideBar and main */
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
}

.sideBar { /* sideBar alignment properties */
    -ms-flex: 20%;
    flex: 20%;
    background-color: #a7a7a7;
    padding: 0px;
    height: 5000px; /* As standard to work on all screen resolutions, overflow hides excess */
    overflow-y: scroll; /* Allows myEd news to scroll */
    overflow: hidden;
}

#newsmyEd {
    width: 100%;
    height: 11.4%;
    min-height: 11.4%;
    top: 0;
    right: 0;
}

.main { /* Main Column */
    -ms-flex: 80%;
    flex: 80%;
    background-color: #a7a7a7;
    padding: 0px;
    height: 5000px; /* As standard to work on all screen resolutions, overflow hides excess */
    overflow-y: scroll; /* Allows embedded iFrame to scroll */
    position: relative;
    overflow: hidden;
}

.frameMain { /* Frame Properties */
    position: absolute;
    top: 0;
    left: 0;
    border: 0;
    min-height: 11.4%;
}

.footer { /* Footer properties */
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: #333;
}

.footer a { /* Footer navBar properties */
    float: right;
    display: block;
    color: #fff;
    text-align: center;
    padding: 6px 12px;
    text-decoration: none;
}

.footer a:hover { /* Change color on hover */
    background-color: #ddd;
    color: #000;
}

.footer a.active { /* Active Link */
    background-color: #666;
    color: #fff;
} 

@media screen and (max-width: 700px) { /* Responsive Layout - If screen px is less than 700px, make sideBar and main stack on top of each other */
    .row {   
        flex-direction: column;
    }
}

@media screen and (max-width: 400px) { /* Responsive Layout - If screen px is less than 400px, make navBar links stack vertically on top of each other */
    .navBar a {
        float: none;
        width: 100%;
    }
}
<!DOCTYPE HTML>
<!-- Copyright (c) myEd (made by students, for students.) 2018. -->
<html lang="en">
<head>
<title>Timetable | myEd</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="/Home/Timetable/Style/style.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
<link rel="shortcut icon" href="/Default/Img/faviconmyEd-16x16.png">
</head>

<body>
<script> // Required scripts for certain activities on myEd, each entry will be noted for understanding
</script>
<div id="wrapper"> <!-- Wrapper fitting website to all screen resolutions -->
<div class="header"> <!-- Header featuring 4K Background, myEd and school emblems -->
<img src="/Default/Img/myEd-reverse.png" class="myEd-reverse" alt="myEd" title="myEd Software"> <!-- myEd Software -->
</div> 
<div class="navBar"> <!-- Main sticky navBar with categories listed -->
<a href="#" class="active" title="Home Workspace"><i class="fa fa-home"></i></a> <!-- Home -->
<a href="#" title="Learning Workspace"><i class="fa fa-book"></i></a> <!-- Learning -->
<a href="#" title="Student Management Workspace"><i class="fa fa-user"></i></a> <!-- Student Management -->
<a href="#" title="Portal Workspace"><i class="fa fa-globe"></i></a> <!-- Portals -->
<a href="#" class="right" title="Log-out"><i class="fas fa-sign-out-alt"></i></a> <!-- Log-out (right to left) -->
<a href="#" class="right" title="Help"><i class="fa fa-question-circle"></i></a> <!-- Help (right to left) -->
<a href="#modalQL" class="right" title="Quick Links"><i class="fa fa-bookmark"></i></a> <!-- Quick Links (right to left) -->

<div id="modalQL" class="modalDialog">
<div>
<a href="#close" title="Close Quick Links" class="close">X</a>
<h3>Quick Links</h3>
<h6><a href="https://kempsey.cs.adventist.edu.au/" target="_blank" rel="noopener" title="Click Here to be redirected to SEQTA Learn">SEQTA Learn</a></h6>
<h6><a href="https://kempsey.cp.adventist.edu.au/" target="_blank" rel="noopener" title="Click Here to be redirected to SEQTA Engage">SEQTA Engage</a></h6>
<h6><a href="https://www.adventist.edu.au" target="_blank" rel="noopener" title="Click Here to be redirected to ASA">Adventist Schools Australia</a></h6>
<br>
<h6><em>The links above are not available via the Portal Pages of myEd as they are unable to be embedded into the software.</em></h6>
</div>
</div>

<a href="#modalPO" class="right" title="Profile Overview"><i class="fas fa-caret-down"></i></a> <!-- Profile dropDown (right to left) -->
<div id="modalPO" class="modalDialog">
<div>
<a href="#close" title="Close Profile Overview" class="close">X</a>
<img class="CARTHmodal" src="/Default/Img/CARTH.jpg" title="Carpenter, Tom" alt="CARTH">
<h2 class="textModalh2">Tom Carpenter</h2>
<h5 class="textModalh5" title="tom.carpenter@kas.nsw.edu.au">tom.carpenter@kas.nsw.edu.au</h5>
<h5 class="textModalh5" title="Student ID: #714020 (CARTH)">#714020 (CARTH)</h5>
<h5 class="textModalh5" title="Year Group: Year 11 (11B)">Year 11 (11B)</h5>
<h5>Kempsey Adventist School</h5>
</div>
</div>
</div>

<div class="row"> <!-- Format for alignment of the sideBar and main panels -->
<div class="main"> <!-- Main learning or collaborative workspace -->
<iframe class="frameMain" width="100%" height="11.4%" scrolling="yes" src="/Home/Timetable/iFrame/index.html"></iframe> <!-- Embedded frame -->
</div>
<div class="sideBar"> <!-- sideBar featuring Profile, myEd News and directory -->
<iframe id="newsmyEd" frameborder="0" src="/Default/News/index.html"></iframe> <!-- myEd News -->
</div>
</div>
<div class="footer"> <!-- Featuring Site Navigation and myEd News navBar links -->
<a href="#" class="active" title="myEd News"><i class="far fa-newspaper"></i></a> <!-- myEd News -->
<a href="/Home/Timetable/siteNavigation/index.html" title="Site Navigation"><i class="fa fa-location-arrow"></i></a> <!-- Site Navigation -->
</div>
</div>
</body>
</html>

感谢您的帮助。 汤姆

1 个答案:

答案 0 :(得分:1)

您可以使用设置iframe高度,例如:

iframe{
    height: calc(100vh - 250px); // 250px is height of header and footer combined
}

通过这种方式,即使更改了屏幕分辨率,您也可以将iframe设置为全高。

演示:https://codepen.io/eirenaios/pen/OaxvEB

*{
	margin: 0;
	padding: 0;
}
header,footer,main{
	display: block;
	clear:both;
	background:#eee;
}

iframe{
	float: left;
	height:calc(100vh - 50px)
}

.first-iframe{
	width:69%;
}

.second-iframe{
	width:29%;
}
<header>
	<h2>Header</h2>
</header>
<main>
	<iframe class="first-iframe" src="https://www.w3schools.com">
  <p>Your browser does not support iframes.</p>
</iframe>
	<iframe class="second-iframe"  src="https://www.w3schools.com">
  <p>Your browser does not support iframes.</p>
</iframe>
</main>
<footer>
	<h5>footer</h5>
</footer>