2017-02-23 24 views
0

要素の中央にページを配置しようとしています。私はちょうどそれを中心に置くことができますが、ビューの高さが中心の要素よりも小さくなるまでページを垂直にサイズ変更すると、要素はスクロールバーなしで垂直方向にオフスクリーンになります。あなたはここでの問題のデモを見ることができます:オフセンターにアクセスできない垂直方向の中央の要素

http://codepen.io/mse/pen/BWayXV

* { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
html, body { 
 
    height: 100%; 
 
} 
 

 
.outer { 
 
    text-align: center; 
 
    position: relative; 
 
    top: 50%; 
 
    transform: translateY(-50%); 
 
} 
 

 
.inner { 
 
    display: inline-block; 
 
    width: 400px; 
 
    height: 800px; 
 
    background: grey; 
 
}
<div class="outer"> 
 
    <div class="inner"></div> 
 
</div>

私はフレキシボックスを含む垂直センタリングの他の方法、のカップルしようとしたことを言及すべきである、と私は」それでも同じ問題が発生しています。この垂直センタリングの方法でこの問題を解決する方法はありますか、または少なくともこの問題がない垂直センタリング方法はありますか?

+1

はあなたが達成したいんどのような影響を与えるのか、理解できないのですか? –

+0

私は、ビューポートが要素の高さよりも小さい場合、ページの上部で停止する要素の上部を探しています。それは現時点ではありません。スクロールバーを介してアクセスせずに画面外に移動し続けます。 – Matt

+0

私はスクロールバー(クロム)を取得 – Pete

答えて

0

これは、あなたの内側の要素のサイズを制限しようとすることができます

* { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
html, body { 
 
    height: 100vh; 
 
} 
 
.outer { 
 
    height: 100%; 
 
    display: flex; 
 
    justify-content: center; 
 
    align-items: center; 
 
} 
 

 
.inner { 
 
    width: 400px; 
 
    height: 800px; 
 
    background: grey; 
 
}
<div class="outer"> 
 
     <div class="inner"></div> 
 
</div>

+0

これは、ページの上部に揃えているようです。垂直方向のセンタリングは全くありません。 http://codepen.io/anon/pen/vxYOBJ – Matt

0

を動作するはずです。サイズを固定のpx量で定義すると、画面がそのpx量より小さくなるとすぐにスクロールが開始されます。内部要素の高さを変更しても問題がなければ、vhを使用するか、@mediaクエリを実装して、より小さい画面でサイズを小さくすることができます。ここで#sの例:

.inner { height: 100vh; /* 100 view height percentage*/} 

注:ビューポートのパーセンテージ長は初期包含ブロックのサイズに対してビューポート上のスクロールバーの存在によって影響されます。

+0

このコードスニペットは歓迎されていますが、いくつかの助けを与えるかもしれませんが、[説明があれば大幅に改善される](// meta.stackexchange.com/q/ 114762)の* how * and * why *が問題を解決します。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。特に、どのバージョンの標準が 'vh'ユニットを定義しているのかを注意する必要があります。 –

0

この

* { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
html, body { 
 
    height: 100%; 
 
} 
 

 
.outer { 
 
    display:flex; 
 
    justify-content:center; 
 
    align-items:center; 
 
} 
 

 
.inner { 
 
    background: #ccc; 
 
    width: 400px; 
 
    height: 600px 
 
}
<div class="outer"> 
 
    <div class="inner"> I'm a block-level element centered vertically within my parent.</div> 
 
</div>

詳細情報試してみてください:https://css-tricks.com/centering-css-complete-guide/

CSS VHセンタージェネレータ:http://howtocenterincss.com/

関連する問題