2017-05-15 30 views
-1

私は静的フッター(95px)、静的ヘッダー(70px)、およびそれらの間に残されているギャップを埋めると思われる動的なdivがあります。ヘッダーとフッターの中間のdivをフィッティング

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<style> 
html, body{ 
    height: 100%; 
    max-height: 100%; 
} 

div.container { 
    height: 98%; 
} 

header, .controls { 
    text-align: center; 
} 
header{ 
    height: 70px; 
    margin-top: 0; 
} 
.controls { 
    display: table; 
    height: 95px; 
    margin-top: 1%; 
    width: 100%; 
} 

#w1 { 
    width:25% 
} 
#can 
    float: left; 
    padding: 0; 
    margin: 0; 
    top: 0; 
} 
#canTwo{ 
    float: left; 
    padding: 0; 
    margin: 0; 
    top: 0; 

} 

#w2{ 
    width:50%; 
border-top: 1px solid black; 
} 
#w3{ 
    width:25%; 
} 

.side{ 
    float: right; 
    width: 150px; 
    height: 77%; 
    margin: 0; 
    border: 1px solid black; 
} 

.hugetext { 

    margin-left: 6px; 
} 

.side ul { 
    float: left; 
    list-style-type: none; 
    padding: 0; 
} 
.controlbuttons { 
    display: table-cell; 
    height: 100%; 
    vertical-align: top; 
} 

.controlbuttons canvas { 
    float: left; 
    padding: 0; 
    margin: 0; 
    top: 0; 
    height: 100%; 
    width: 100%; 
} 

.side ul a { 
    text-decoration: none; 
} 

.big { 

    border: 1px black solid; 
    height: 77%; 
    overflow: hidden; 
} 
</style> 
</head> 
    <body> 

    <div class="container"> 

    <header> 
    hi 
</header> 

<div class = "side"> 
    <ul> 
    <li><a href="#">a</a></li> 
    <li><a href="#">a</a></li> 
    <li><a href="#">a</a></li> 
    </ul> 
</div> 

<div class = "big"> 
    <div class = "hugetext"> 
    <h1>hi</h1> 
    <p>hi</p> 
    <p>hi</p> 
    </div> 
</div> 

<div class="controls"> 
    <div class="controlbuttons" id="w1"><canvas id = "can" width = '0px' height = '0px'></div> 
    <div class="controlbuttons" id="w2"></div> 
    <div class="controlbuttons" id="w3"><canvas id = "canTwo" width = '0px' height = '0px'></div> 
</div> 

</div> 
<script> 



document.addEventListener("DOMContentLoaded", function(event) { 
    fitToContainer(); 
}); 
var canvas = document.getElementById("can"), 
    ctx = canvas.getContext('2d'), 
    rightCanvas = document.getElementById("canTwo"), 
    rightCtx = rightCanvas.getContext('2d'), 
    control = document.getElementsByClassName("controlbuttons")[0]; 


function fitToContainer(){ 
    reoffset(); 


    function reoffset(){ 

     var h = control.clientHeight; 
     var w = control.clientWidth; 

     canvas.height = h; 

     canvas.width = w; 

     rightCanvas.height = h; 

     rightCanvas.width = w; 

     ctx.fillStyle = "green"; 
     rightCtx.fillStyle = "green"; 
     rightCtx.fillRect(0, 0, w, h); 
     ctx.fillRect(0, 0, w, h); 
    } 


} 

</script> 
</body> 
</html> 

https://jsfiddle.net/zyjr3m2g/

のdiv側の大きな&は、ウェブサイトの中央部分である:私は、次のコードを持っています。 私はこれを達成しようとしています:

enter image description here

問題は、小さな画面上です。ウェブサイト全体はクライアントウィンドウに収まる必要があります。サイズを変更しても、中央のdivを小さく/大きくしてウィンドウに合わせる必要があります(縮小または拡大した場合による)。すべてが見えるので、利用可能なスクロールがあるはずがありません。これを達成する方法はありますか?私は何時も運がなかった。

答えて

0

私はフレックス使用することをお勧めします:

* { 
 
    box-sizing: border-box; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
html { 
 
    width: 100%; 
 
} 
 

 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    min-height: 100%; 
 
    height: 100vh; 
 
} 
 

 
header { 
 
    flex: 0 0 70px; 
 
    background-color: red; 
 
} 
 

 
main { 
 
    flex: 0 0 calc(100% - 165px); 
 
    display: flex; 
 
    flex-direction: row; 
 
} 
 

 
main >:first-child { 
 
    flex: 1 calc(100% - 200px); 
 
    background-color: yellow; 
 
    height: auto; 
 
} 
 

 
main >:last-child { 
 
    flex: 1 200px; 
 
    background-color: black; 
 
    height: auto; 
 
} 
 

 
footer { 
 
    flex: 0 0 95px; 
 
    background-color: green; 
 
}
<body> 
 
    <header> 
 
    </header> 
 
    <main> 
 
    <section></section> 
 
    <section></section> 
 
    </main> 
 
    <footer> 
 
    </footer> 
 
</body>

私はデモのために静的な高さの値を使用しています。あなたはjsfiddleのように私はここに同じやった場合: jsfiddle

+0

どのように黒い部分(メイン:ラストチャイルド)を200pxにし、黄色の部分(メインの最初の子)を残すことができますか? – RunningFromShia

+0

これはレスポンシブなデザインを殺しますが、ここであなたは[JSF](https://jsfiddle.net/NightKn8/mydqq7zd/2/)に行って元の答えを更新しました。 – NightKn8

+0

新しい行を作成するのではなく、最初のセクションをテキストでオーバーフローさせないようにすることはできますか?

多くのテキスト
RunningFromShia

1

を別の方法として、あなたはcalc

height center content = 100vh - (height header + height footer); 
height: calc(100vh - (70px + 95px)); 

* { 
 
    padding: 0; 
 
    margin: 0; 
 
    box-sizing: border-box; 
 
} 
 

 
html, 
 
body { 
 
    height: 100%; 
 
    max-height: 100%; 
 
} 
 

 
body { 
 
    font-size: 18px; 
 
    font-family: 'segoe ui', sans-serif; 
 
    text-align: center; 
 
    text-transform: uppercase; 
 
} 
 

 
header { 
 
    height: 70px; 
 
    background: #ccc; 
 
    padding: 1em; 
 
} 
 

 
section { 
 
    display: table; 
 
    width: 100%; 
 
    height: calc(100vh - (70px + 95px)); 
 
} 
 

 
section>aside, 
 
section>article { 
 
    display: table-cell; 
 
    vertical-align: top; 
 
    padding: 1em; 
 
    border: 2px solid #000; 
 
} 
 

 
section>aside { 
 
    width: 25%; 
 
} 
 

 
footer { 
 
    height: 95px; 
 
    background: #000; 
 
    color: #fff; 
 
    padding: 1em; 
 
}
<div class="container"> 
 
    <header>header</header> 
 
    <section> 
 
    <article>content</article> 
 
    <aside>sidebar</aside> 
 
    </section> 
 
    <footer>footer</footer> 
 
</div>

+0

テキストがオーバーフローしないようにする方法を知っていますか?
0

を使用することができ、あなたのレイアウト設計のために、次のコードを使用します。

<!DOCTYPE html> 
<html> 
<head> 
<style> 
html, body { 
    padding: 0; 
    margin:0; 
    height: 100%; 
    width: 100%; 
} 
header { 
    height:70px; 
    background: #ccc; 
} 
footer { 
    height: 90px; 
    background: #ccc; 
} 
#container{ 
    height: calc(100% - 160px); 
} 
#content { 
    display: inline-block; 
    background: red; 
    height: 100%; 
    width: calc(100% - 305px); 
} 
#nav { 
    height: 100%; 
    display: inline-block; 
    background: green; 
    width: 300px; 
} 
</style> 
</head> 
<body> 
<header>Header</header> 
<div id="container"> 
    <div id="content">Content</div> 
    <div id="nav">Nav</div> 
</div> 
<footer>Footer</footer> 

</body> 
</html> 
関連する問題