2017-03-07 13 views
1

固定ヘッダーとメインdivにパーセンテージの値を与えると、何か変なことが起こります。相対的な高さのマージンが不揃いの固定ヘッダー

ヘッダーの高さの値として50pxを使用し、メインエリアの余白として50pxを使用すると、すべて正常に動作します。

しかし、私はこれらの値は10%になりたいときに、ヘッダーとメインの間に矛盾の距離があります:

header { 
 
    position: fixed; 
 
    display: block; 
 
    top: 0px; 
 
    left: 0px; 
 
    right: 0px; 
 
    height: 10%; 
 
    background-color: green; 
 
} 
 

 
main { 
 
    margin-top: 10%; 
 
    background-color: blue; 
 
}
<header> 
 
    My Header 
 
</header> 
 
<main> 
 
    Mainarea here! 
 
</main>

jsfiddle:https://jsfiddle.net/azizn/L7sroo4m/

は誰かに説明を持っていますこのため?あなたのhtmlとあなたの体のタグは、特定の高さと幅を持っていない

+1

マージントップ/ボトムの例がある

X%親の幅を参照してください参照https://www.w3.org/TR /CSS21/box.html#margin-propertiesを追加して、折りたたみ余白効果を追加した場合、最初は混乱している可能性があります。 –

+0

私はまだ混乱しています。要素は同じ親を持ちます。これは、パーセンテージ値が同じ絶対値に影響することを意味します。 –

+0

高さ:10%、余白:10%は同じではありません。ウィンドウのサイズを変更し、マージン値の10%の更新を参照してください。要素は絶対位置または固定位置に設定されていますが、ここで使うことができます: 'body:before {content: ''; height:10vh; display:block;}'平均余白:10%;メインのマージントップ:10vh;働くでしょう。 https://jsfiddle.net/L7sroo4m/1/ –

答えて

0

GCyrillusは今、これに答えるために私にヒントを与えた:

問題は、高さのパーセント値は、親の高さを意味しますがマージントップのパーセント値は、親の幅を参照していることです。

解決策はパーセント値を使用せず、ビューポートの高さを参照するビューポート単位x vhを使用することです。

つまり、私の例では10%10vhと置き換えても問題ありません。 x%またはパディングトップ/ボトム:ビューポートユニット

http://www.quirksmode.org/css/units-values/viewport_small.html
0

、スタータ用のuが、この追加する必要があります。

html, body{ 
    height: 100%; 
    width: 100%; 
    padding: 0; 
    margin: 0; 
} 

をここに完全なCSSです:

html, body{ 
    height: 100%; 
    width: 100%; 
    padding: 0; 
    margin: 0; 
} 
header { 
    position: fixed; 
    display: block; 
    top: 0px; 
    left: 0px; 
    right: 0px; 
    height: 10%; 
    width: 100%; 
    background-color: green; 
} 
main { 
    position: absolute; 
    display: block; 
    top: 10%; 
    width: 100%; 
    background-color: blue; 
}  

私はメインposition: absoluteを作成し、余白の代わりに先頭に付けました。ヘッダが本体にあるため、body{height: 90%;}を実行しない限り、マージンがボトムにオーバーフローします。

+0

私はすでに両方のCSS宣言でtopを使う解決策を持っていましたが、私のレイアウトのバージョン。 –

+0

ご希望の場合は、修正するお手伝いをいたします。 IDは私が少し経験したと言っている –

+0

ちょうどあなたがここで問題の返信を得るたびに –

関連する問題