有哪裡不懂的,請在下面留言,我每天都看,有時間我會一一解答,看評論區也許有人提出了跟你同樣想問的問題,可以看看我給出的回答,不用重複提問。
原文參考地址
不說廢話直接開始。
單行文字垂直居中
#kexuejiafivefiveopen {
width: 200px;
height: 100px;
line-height: 100px;
text-align: center;
background: pink;
color: gray;
}
<div id="kexuejiafivefiveopen">
<p>單行文文字垂直居中</p>
</div>
複製程式碼
- 此方法只適用於單行且較短的文字,如果是多行文字或單行較長的文字則會溢位
- 單行短文字居中的重點在於文字的基線(自行百度),文字的行高和容器的高度達到一致,由於文字的基線問題則該文字垂直居中
- line-height是可以繼承的,line-height細節十分講究請自行查閱相關資料
多行文字塊display:table垂直居中
#cixitaihou {
width: 600px;
height: 100px;
background: pink;
color: gray;
overflow: hidden;
display: table;
}
#uhuang {
display: table-cell;
vertical-align: middle;
height: 50px;
background: yellow;
}
<div id="cixitaihou">
<p id='uhuang'>多行文字table塊垂直居中</p>
</div>
複製程式碼
- 此方法適用於多行文字塊居中
- 此方法利用了display:table的特性給父盒子轉換為table給盒子設定table-cell加上vertical-align:center,vertical-align屬性十分講究請自己查閱相關資料
absolute居中-上下左右0+margin:auto
#fuck {
width: 400px;
height: 100px;
background: pink;
position: relative;
}
#fuck .you {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
height: 50px;
width: 50%;
background: yellow;
color: gray;
}
<div id="fuck">
<div class="you">absolute上下左右0配合margin:auto</div>
</div>
複製程式碼
- 此方法重點在於absolute在父盒子裡的top,right,bottom,left的值均為零,同時要設定margin:auto
- 有個小細節是.you盒子的高度是百分比,說明百分比的盒子也適用於這種方法
absolute+transform居中
#fuck {
width: 400px;
height: 100px;
background: #161616;
color: #fff;
position: relative;
}
#fuck .you {
position: absolute;
left: 50%;
top: 50%;
background: #999;
transform: translateX(-50%) translateY(-50%);
}
<div id="fuck">
<div class="you">absolute+transform居中</div>
</div>
複製程式碼
- left:50%,top:50%是基於.you的最左上角定點移動,transform: translateX(-50%) translateY(-50%);是把.you自身的50%進行移動,因為left:50%,top:50%移動過頭了,所以要用 translateX和Y設定為負值反向退回來從而達到居中
absolute固定自減居中
#fuck {
width: 400px;
height: 100px;
background: pink;
color: gray;
position: relative;
}
#fuck .you {
height: 50px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -25px;
margin-left: -100px;
background: yellow;
}
<div id="fuck">
<div class="you">塊區域垂直居中</div>
</div>
複製程式碼
- 這個方法只適合在你這個東西固定寬高的情況下使用,道理和上面translate一樣,left和right移動了50%再用負值的margin拉回來
- 在使用margin的時候有可能會頂開或者遮蓋住其他元素,看情況使用。
margin填充居中
#fuck {
width: 400px;
height: 100px;
background: pink;
color: gray;
overflow: hidden;
}
#fuck .you {
margin-left: auto;
margin-right: auto;
margin-top: calc((100px - 50px)/2);
height: 50px;
background: yellow;
}
<div id="fuck">
<div class="you">margin:calc計算</div>
</div>
複製程式碼
- margin左右auto可以讓塊級元素水平居中,但是margin上下auto卻不能使其垂直居中,這個方法的前提是確定了父子盒子的高度用css3的計算calc計算出一個數值給margintop把自己頂下來,慎用。