2017-09-20 36 views
0

我想中心下面wrapper父div元素內與等於一個heightwindowsview height,使用CSS內居中的元件。如何父DIV垂直

HTML

<div class="main-header"> 
    <div class="wrapper">center div</div> 
</div> 

CSS

.main-header{ 
color: #fff; 
background: #16a8ec; 
padding: 10px; 
height: 100vh; 
position: relative; } 

.wrapper{ 
position: absolute; 
left: 0px; 
right: 0px; 
transform: translate(0px, 50%); /* i used transform but it doesn't work */ 
-webkit-transform: translate(0px, 50%); /* i used transform but it doesn't work */ } 

請幫我傢伙,謝謝。

+1

問題與使用顯示器撓性 – bellabelle

+1

@bellabelle嗨的解決,試試這個方法:https://jsfiddle.net/dh0o82g6/與定位&&與Flexbox的:HTTPS:/ /jsfiddle.net/dh0o82g6/1/ –

+0

而不是在你的定位中使用px,嘗試使用'%'在不同的屏幕上完美地工作。 – bhansa

回答

1

你想要這樣的東西嗎?

的變化:

  1. html和主體元件應設置爲窗口(視口)的高度,所以就用該屬性height:100vh,然後身體默認已邊距爲8px,所以我使用了財產margin:0px

  2. 要把div放在你的中心,只需要使用text-align: center作爲main-header的div。

html, 
 
body { 
 
    height: 100vh; 
 
    margin: 0px; 
 
} 
 

 
.main-header { 
 
    color: #fff; 
 
    background: #16a8ec; 
 
    padding: 10px; 
 
    box-sizing: border-box; 
 
    height: 100vh; 
 
    position: relative; 
 
    text-align: center; 
 
} 
 

 
.wrapper { 
 
    position: absolute; 
 
    left: 0px; 
 
    right: 0px; 
 
    top: 50%; 
 
    left: 0; 
 
    right: 0; 
 
    transform: translateY(-50%); 
 
}
<div class="main-header"> 
 
    <div class="wrapper">center div</div> 
 
</div>

+0

不,我想垂直居中包裝元素 – bellabelle

+0

@bellabelle你現在可以檢查我的答案嗎? –

2

隨着Flexbox的:

.main-header{ 
    color: #fff; 
    background: #16a8ec; 
    padding: 10px; 
    height: 100vh; 
    position: relative; 
    /* Flexbox */ 
    display: flex; 
    align-items: center; 
} 

.wrapper{ 
    /* your wrapper style */ 
} 

隨着絕對位置:

.main-header{ 
    color: #fff; 
    background: #16a8ec; 
    padding: 10px; 
    height: 100vh; 
    position: relative; 
} 

.wrapper{ 
    position: absolute; 
    top: 50%; 
    transform: translateY(-50%); 
} 
+0

結果不是 – bellabelle

+1

對不起,你的答案是正確的,顯示flex然後對齊項目中心 – bellabelle

+0

它的工作原理!謝謝 – bellabelle

0

選中此項:增加了top:46%left:46%,你也可以用其他方式來做。

.main-header{ 
 
color: #fff; 
 
background: #16a8ec; 
 
padding: 10px; 
 
height: 100vh; 
 
position: relative; } 
 

 
.wrapper{ 
 
position: absolute; 
 
top:46%; 
 
left: 46%; 
 
transform: translate(0px, 50%); /* i used transform but it doesn't work */ 
 
-webkit-transform: translate(0px, 50%); /* i used transform but it doesn't work */ }
<div class="main-header"> 
 
    <div class="wrapper">center div</div> 
 
</div>

0

你只需要添加top: 0; bottom: 0.wrapper這樣的:

.main-header{ 
 
color: #fff; 
 
background: #16a8ec; 
 
padding: 10px; 
 
height: 100vh; 
 
position: relative; } 
 

 
.wrapper{ 
 
position: absolute; 
 
left: 0px; 
 
right: 0px; 
 
transform: translate(0px, 50%); /* i used transform but it doesn't work */ 
 
-webkit-transform: translate(0px, 50%); /* i used transform but it doesn't work */ 
 
text-align: center; 
 
top: 0; 
 
bottom: 0; 
 
}
<div class="main-header"> 
 
    <div class="wrapper">center div</div> 
 
</div>

您還可以檢查此Fiddle

0

只需將display: table給予父母,並將display: table-cell; vertival-align: middle;給予適合您的孩子。

工作示例。

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <style> 
 
     .main-header { 
 
      color: #fff; 
 
      background: #16a8ec; 
 
      padding: 10px; 
 
      height: 100vh; 
 
      width: 100%; 
 
      display: table; 
 
     } 
 
     
 
     .wrapper { 
 
      display: table-cell; 
 
      vertical-align: middle; 
 
     } 
 
    </style> 
 
</head> 
 

 
<body> 
 
    <div class="main-header"> 
 
     <div class="wrapper">center div</div> 
 
    </div> 
 
</body> 
 

 
</html>