2017-04-30 13 views
2

私は写真でこのレイアウトを取得しようとしていますが、DIVタグがCSSルールに従わないようです。 問題は私がパーセンテージで設定しようとしているからです。画面のサイズに合わせてこのレイアウトが必要です。私はスクロールを表示したくない。また、モニタを横向きにしても、レイアウトに従います。DIVはCSSルールに従っていません。何か案は?

#one { 
 
    height: 20%; 
 
    width: 45%; 
 
    background-color: #66F; 
 
    float: left; 
 
} 
 

 
#two { 
 
    background-color: #FC3; 
 
    height: 40%; 
 
    width: 45%; 
 
    float: right; 
 
} 
 

 
#three { 
 
    background-color: #0CC; 
 
    float: left; 
 
    height: 20%; 
 
    width: 45%; 
 
} 
 

 
#four { 
 
    background-color: #CF3; 
 
    height: 10%; 
 
    width: 80%; 
 
    float: left; 
 
    margin-right: 10%; 
 
    margin-left: 10%; 
 
} 
 

 
#five { 
 
    background-color: #F06; 
 
    float: left; 
 
    height: 40%; 
 
    width: 45%; 
 
} 
 

 
#six { 
 
    background-color: #9C0; 
 
    float: right; 
 
    height: 20%; 
 
    width: 45%; 
 
} 
 

 
#seven { 
 
    background-color: #3FF; 
 
    float: right; 
 
    height: 20%; 
 
    width: 45%; 
 
} 
 

 
#eight { 
 
    background-color: #396; 
 
    height: 10%; 
 
    width: 80%; 
 
    margin-right: 10%; 
 
    margin-left: 10%; 
 
}
<body> 
 
    <div id="one">one</div> 
 
    <div id="two">two</div> 
 
    <div id="three">three</div> 
 
    <div id="four">four</div> 
 
    <br> 
 
    <div id="five">five</div> 
 
    <div id="six">Six</div> 
 
    <div id="seven">Seven</div> 
 
    <div id="eight">Content for id "eight" Goes Here</div> 
 
</body>

任意のヘルプ?

Layout Image

+0

私はあなたのためにこれを作るつもりはありません。私はあなたがそれをやる方法を学びたいと思う。私の提案は、このレイアウトを最初に行のために考え、4つのdivのセクションをラップし、幅を100%に設定します。試してみてください。 – Baro

+0

高さ(%)は、親の高さが指定されている場合、少なくともその高さのパーセンテージを意味します。ですから、画面の高さの割合が必要な場合は、 'html、body {height:100%}'を追加する必要があります。それで全部です。 –

答えて

2

パーセントの幅/高さは、最寄りに位置祖先に対するものです。 あなたは、画面サイズにあなたの要素が相対的なサイズにしたい場合は、代わりにビューポートの幅/高さを使用することができます。

height: 20vh; 
width: 40vw; 

は、ビューポートの高さの20%、ビューポートの幅の40%になります。

+0

これは本当にうまくいきませんでした...今はすべてが1行になっています... – Thiago

+1

vw/vhに対するパーセンテージをどのように変化させることができるのかよくわかりません。私はペンで試してみましたが、うまくいくようです - https://codepen.io/anon/pen/Ommjmz。無関係な注釈では、要素をドキュメントの流れから取り除くので、可能ならば 'float'を使用しないでください。より良い解決策は、左と右の要素の間に空のフレックス要素を追加することです。 – ash

+0

私もそれを試して、それはクロムバージョン49.0.2623.112 mで動作します。 https://codepen.io/anon/pen/XRReQzを参照してください。 – slevy1

1

あなたは高さのパーセンテージを使用する場合は、一般的にheight: 100%;されるであろう、すべての親要素の固定の高さを持っているかbodyhtmlまで最長1のいずれかのために高さを定義する必要があります。

(あなたの例では一つのルールが十分なものでなければならないように、あなたのdiv要素とbodyの間には他の親要素は、存在しない)

html, 
 
body { 
 
    height: 100%; 
 
} 
 

 
#one { 
 
    height: 20%; 
 
    width: 45%; 
 
    background-color: #66F; 
 
    float: left; 
 
} 
 

 
#two { 
 
    background-color: #FC3; 
 
    height: 40%; 
 
    width: 45%; 
 
    float: right; 
 
} 
 

 
#three { 
 
    background-color: #0CC; 
 
    float: left; 
 
    height: 20%; 
 
    width: 45%; 
 
} 
 

 
#four { 
 
    background-color: #CF3; 
 
    height: 10%; 
 
    width: 80%; 
 
    float: left; 
 
    margin-right: 10%; 
 
    margin-left: 10%; 
 
} 
 

 
#five { 
 
    background-color: #F06; 
 
    float: left; 
 
    height: 40%; 
 
    width: 45%; 
 
} 
 

 
#six { 
 
    background-color: #9C0; 
 
    float: right; 
 
    height: 20%; 
 
    width: 45%; 
 
} 
 

 
#seven { 
 
    background-color: #3FF; 
 
    float: right; 
 
    height: 20%; 
 
    width: 45%; 
 
} 
 

 
#eight { 
 
    background-color: #396; 
 
    height: 10%; 
 
    width: 80%; 
 
    margin-right: 10%; 
 
    margin-left: 10%; 
 
}
<div id="one">one</div> 
 
<div id="two">two</div> 
 
<div id="three">three</div> 
 
<div id="four">four</div> 
 
</br> 
 
<div id="five">five</div> 
 
<div id="six">Six</div> 
 
<div id="seven">Seven</div> 
 
<div id="eight">Content for id "eight" Goes Here</div>

0

あなたのCSSにこれを追加することができます。

div { 
    overflow:hidden; 
} 

これは、すべてのスクロールバーを非表示になります。しかし、body、htmlの幅と高さのスタイルが問題になる可能性があるため、これだけでは不十分です(here参照)。ソリューションは、CSSでこれに似た何かを追加することです:

html,body { 
overflow:hidden; 
} 

CSSのVHとVWのユニットを使用してdemo

を参照してください(下記参照)にも灰が言及してスクロールバーを非表示にするには、別の方法です。唯一の欠点は、ユーザーがブラウザのウィンドウを小さなサイズにサイズ変更した場合、スクロールバーが表示される(here)ことがあります。

CSS vhおよびvw測定単位を使用し、HTMLおよび本文のオーバーフローが隠されていることをコードが指定している限り、スクロールバーを完全に隠しておく方法を見つけました。 demo

関連する問題