2017-02-23 62 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>

我要指出,我已經嘗試了幾個垂直居中的其他方法,包括實現Flexbox,和我米仍然遇到同樣的問題。有沒有辦法用這種垂直居中方法來解決這個問題,還是至少有一種垂直居中方法不存在這個問題?

+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查詢來減小較小屏幕上的大小。這裏#是一個例子:

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

注:視口百分比長度的相對於包含塊初始大小和受滾動條的上視區的存在。

+0

雖然這段代碼是受歡迎的,並且可能會提供一些幫助,但如果它包含一個解釋,它會[大大改善](// meta.stackexchange.com/q/ 114762)的*如何*和*爲什麼*這解決了這個問題。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。特別是,你應該注意哪個版本的標準定義了'vh'單元。 –