2017-07-28 2 views

Antwort

3

können Sie flex-direction: column für diese.

Arbeitsbeispiel:

var header = document.getElementsByTagName('header')[0]; 
 
var main = document.getElementsByTagName('main')[0]; 
 
var footer = document.getElementsByTagName('footer')[0]; 
 
var input = document.getElementsByTagName('input')[0]; 
 

 
function changeHeight() { 
 
var newHeight = document.getElementsByTagName('input')[0].value; 
 

 
header.style.flex = '1 0 ' + newHeight + 'px'; 
 
footer.style.flex = '1 0 ' + newHeight + 'px'; 
 
main.style.height= 'calc(100vh - ' + (newHeight * 2) + 'px)'; 
 
} 
 

 
input.addEventListener('change', changeHeight, false);
body { 
 
display: flex; 
 
flex-direction: column; 
 
margin: 0; 
 
padding: 0; 
 
} 
 

 
header, footer { 
 
flex: 1 0 100px; 
 
color: rgb(255, 255, 255); 
 
background-color: rgb(127, 127, 127); 
 
} 
 

 
header h2, footer h2 { 
 
margin: 0; 
 
padding: 0; 
 
} 
 

 
main { 
 
height: calc(100vh - 200px); 
 
overflow: hidden; 
 
} 
 

 
header, footer, main { 
 
text-align: center; 
 
} 
 

 
input { 
 
width: 50px; 
 
margin: 24px; 
 
}
<header><h2>Header</h2></header> 
 

 
<main> 
 
<p>You can vertically resize the <strong>Header</strong> and the <strong>Footer</strong>.</p> 
 

 
<form> 
 
<fieldset> 
 
<legend>Resize height of Header and Footer</legend> 
 
<input type="number" value="100" step="10" min="60" /> 
 
</fieldset> 
 
</form> 
 
</main> 
 

 
<footer><h2>Footer</h2></footer>

+0

Aber tun Sie dies nur mit HTML und CSS –

+0

Vielleicht verstehe ich nicht. Diese Lösung ** ist ** nur in HTML und CSS. Das Javascript-Widget soll beweisen, dass es funktioniert. – Rounin

+1

Entschuldigung, ich habe Ihren Code nicht überprüft, es funktioniert gut danke und tut mir leid wieder –

0

enter image description here

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <base href="/"> 

    <title>test</title> 
    <style> 

.divB{ 
    height: 100vh; 
} 
.divA{ 
    height:64px; 
    position: fixed; 
    top: 0; 

    background:green; 
    width: 100% 
} 
.divC{ 
    height:64px; 
    position: absolute; 
    bottom:0; 
    background:green; 
    width: 100% 

} 
body{ 
    margin: 0 
} 


    </style> 




</head> 

<body style="background:red" > 


    <div class="divA"></div> 
    <div class="divB"></div> 
    <div class="divC"></div> 

</body> 
</html> 
+0

Und was ist mit div-c? –

+0

Ich habe es gerade bearbeitet. Überprüfen Sie es erneut. –

+0

PLZ überprüfen Sie es erneut Ihre Ausgabe –

0

Obwohl Sie nicht jQuery verwenden, aber wenn Sie jQuery verwenden möchten, kann es hilfreich sein ...!

$(document).ready(function() { 
 
    var heightA = $('.a').outerHeight(), 
 
     heightC = $('.c').outerHeight(); 
 
    $('.b').css({ 
 
     'padding-top': heightA, 
 
     'padding-bottom': heightC 
 
    }); 
 
});
* {margin: 0px; box-sizing: border-box;} 
 
.a, .c {height: auto; background: blue; position: absolute; left: 0px; right: 0px;} 
 
.a {top: 0px;} .c {bottom: 0px;} 
 
.b {height: 100vh; position: relative; background: #ccc;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="b"> 
 
\t <div class="a"> 
 
\t \t Div A <br /><br /> 
 
\t </div> 
 
    Div B 
 
\t <div class="c"> 
 
\t \t Div C <br /><br /> 
 
\t </div> 
 
</div>

+0

Nur mit HTML und CSS –

+0

Was ist falsch mit der Verwendung von jQuery ..? –

+0

Ich arbeite an ReactJs und nur mit HTML, CSS und reagieren js –