既存のトレッドで答えが見つからなかったので、ここで新しく登録しました。
1ページのWebサイトを作成しようとしていますが、「ランディングページ」に完全な背景を持たせたいと考えています。ページ全体に背景がありましたが、divにテキストを配置し始めたときに壊れました。私は次のcss(sass)を使用しました:
.intro {
color: #fff;
height: 100vh;
background: url('http://www.flabber.nl/sites/default/files/archive/files/i-should-buy-a-boat.jpg') no-repeat center center;
background-size: cover;
&--buttons {
position: absolute;
bottom: 2em;
}
}
p.hello {
margin: 30px;
}
.page1 {
color: #fff;
height: 100vh;
background: beige;
}
.page2 {
color: #fff;
height: 100vh;
background: black;
}
次のHTMLを使用します。
<html>
<head>
<link href="stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css" />
<title>My title</title>
</head>
<body>
<div class="container">
<div class="row">
<div id="intro" class="intro">
<div class="text-center">
<p class="hello">
Intro text is coming soon!
</p>
<div class="col small-col-12 intro--buttons">
<p>Buttons coming here.
</p>
</div>
</div>
</div>
<div id="page1" class="col col-12 page1">
<p>Tekst test</p>
</div>
<div id="page2" class="col col-12 page2">
<p>Tekst test.</p>
</div>
</div>
</div>
</body>
</html>
ここで結果を見ることができます: http://codepen.io/Luchadora/full/waYzMZ または私のペンを見てください: http://codepen.io/Luchadora/pen/waYzMZ
ご覧のとおり、イントロテキスト(p.hello {margin: 30px;}
)を配置すると、背景のサイズが変更され、全画面表示ではなくなります(ところで、背景の例を使用しました)。他のページにも空白があります。
どうすればこれを修正できますか?ビューポートに関する記事を読んだことがありますが、これに必要なのはheight: 100vh;
だけだと思います。前もって感謝します!
あなたの問題は マージンの崩壊 にあります:
親と最初/最後の子
ブロックのマージン上部と最初の子ブロックのマージン上部を分離するための境界線、パディング、インラインコンテンツ、またはクリアランスがない場合、または境界線、パディング、インラインコンテンツ、高さ、最小値がない場合-height、またはmax-heightは、ブロックのmargin-bottomを最後の子のmargin-bottomで分離し、それらのマージンは折りたたまれます。折りたたまれたマージンは、親の外側になります。
問題を解決するには、.text-center
にパディングを追加します。
.text-center {padding:1px;}
体のマージンを無効にしていません。これをCSSに追加します
body{
margin:0px;
}
編集:ピートが投稿した答えは完全な解決策のようです、申し訳ありませんが遅すぎました!