垂直水平居中的四種方式
阿新 • • 發佈:2018-12-18
方案1:position 元素已知寬度 父元素設定為:position: relative; 子元素設定為:position: absolute; 距上50%,據左50%,然後減去元素自身寬度的距離就可以實現
效果圖:
程式碼:
div class="box"> <div class="content"> </div> </div> .box { background-color: #FF8C00; width: 300px; height: 300px; position: relative; } .content { background-color: #F00; width: 100px; height: 100px; position: absolute; left: 50%; top: 50%; margin: -50px 0 0 -50px; }
方案2:position transform 元素未知寬度 如果元素未知寬度,只需將上面例子中的margin: -50px 0 0 -50px;替換為:transform: translate(-50%,-50%);
程式碼:
<div class="box"> <div class="content"> </div> </div> .box { background-color: #FF8C00; width: 300px; height: 300px; position: relative; } .content { background-color: #F00; width: 100px; height: 100px; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); }
方案3:flex佈局
程式碼:
<div class="box"> <div class="content"> </div> </div> .box { background-color: #FF8C00; width: 300px; height: 300px; display: flex;//flex佈局 justify-content: center;//使子專案水平居中 align-items: center;//使子專案垂直居中 } .content { background-color: #F00; width: 100px; height: 100px; }
方案4:table-cell佈局 因為table-cell相當與表格的td,td為行內元素,無法設定寬和高,所以巢狀一層,巢狀一層必須設定display: inline-block;td的背景覆蓋了橘黃色,不推薦使用
效果圖:
<div class="box">
<div class="content">
<div class="inner">
</div>
</div>
</div>
.box {
background-color: #FF8C00;//橘黃色
width: 300px;
height: 300px;
display: table;
}
.content {
background-color: #F00;//紅色
display: table-cell;
vertical-align: middle;//使子元素垂直居中
text-align: center;//使子元素水平居中
}
.inner {
background-color: #000;//黑色
display: inline-block;
width: 20%;
height: 20%;
}