在咱們 編寫css 樣式的時候常常會碰見一個問題 那就是一個 寬高未知的元素 要讓他 垂直居中如何實現這個呢 下面是我經常使用的兩種方法css
上代碼html
下面的是 結構代碼 css3
<div class="wrap">//此處爲父組件 咱們會設置父級的寬高並讓其居中web
<div class="center">//子組件咱們要實現它的垂直居中 不設置他的寬高 寬高 都由下面的img引入的圖片撐開瀏覽器
<img width="100px" src="img/logo.a68568a.png"/>spa
</div>orm
</div>htm
下面是樣式代碼圖片
.wrap{設置一個居中的外框utf-8
width: 500px;
height: 400px;
border: 1px solid black;
margin: 0 auto;
text-align: center;//水平居中
}
.wrap:before{//設置一個寬度爲0的僞類爲何要設置這個僞類 起時這個僞類起到了一個對準線的做用
display: inline-block;
content: '';
height: 100%;
width: 0;
vertical-align: middle;//垂直居中
}
.center{//這個時候 在對咱們的centerdiv 設置 vertical-align: middle 就可垂直居中了
vertical-align: middle;
display: inline-block;
}
img{
vertical-align: top;
}
二 css3 transform解決
.wrap{//一個固定寬高 居中的外框
width: 500px;
height: 400px;
border: 1px solid black;
margin: 0 auto;
}
.center{//咱們的center div 仍是寫成inline-block 的樣式
position: relative;
//相對定位 經過相對定位left top 值的設置來讓center div 的左上角的位置 爲wrap 的中心
//但這個時候咱們還不是徹底垂直居中 由於咱們的center div 自己也有自適應的寬高 這個時候 就要用到transform了
//經過translateX(-50%) translateY(-50%) 讓center 自己在x軸y軸上偏移50% 達到真正的居中(軸心點默認在左上角)
//注意transform各個瀏覽器有不一樣的前綴而且不兼容ie8 如下
top: 50%;
left: 50%;
display: inline-block;
-webkit-transform: translateX(-50%) translateY(-50%);
}
img{
vertical-align: top;
}
<!DOCTYPE html><html><head><meta charset="utf-8" /><title></title><style type="text/css">document{height: 100%;}html{height: 100%;}body{height: 100%;overflow: hidden;margin: 0;}#bigwrap{width: 100%;height: 100%;text-align: center;}#bigwrap:before{height: 100%;width: 0;vertical-align: middle;content: '';display: inline-block;}.wrap{width: 500px;height: 400px;border: 1px solid black;margin: 0 auto;text-align: center;}.wrap:before{display: inline-block;content: '';height: 100%;width: 0;vertical-align: middle;}.center{vertical-align: middle;display: inline-block;}img{vertical-align: top;}/*.center { position: fixed; top: 50%; left: 50%; background-color: #000; width:50%; height: 50%;-webkit-transform: translateX(-50%) translateY(-50%);}*/</style></head><body><!--<div id="bigwrap">--><div class="wrap"><div class="center"><img width="100px" src="img/logo.a68568a.png"/></div></div></div></body></html>