CSS垂直水平居中
小小的總結一下:行內元素水平居中用text-align: center;塊級元素水平居中用margin-left: auto; margin-right: auto;
首先討論一下單行時的情況。
毫無疑問,這是最簡單的一種情況。
HTML結構如下:
1 <div class="demo"> 2 <span>111111111111111111111111111111111111</span> 3 </div>
高度不固定(這種方法同樣適用于多行文時的情況,下面就不再討論)
1 .demo { 2 text-align: center; 3 padding-top: 20px; 4 padding-bottom: 20px; 5 }
高度固定
1 .demo { 2 text-align: center; 3 height: 100px; 4 line-height: 100px; 5 }
接下來,討論下多行時的情況。
HTML結構如下:
1 <div class="demo"> 2 <span>111111111111111111111111111111111111<br />22222222222222222222</span> 3 </div>
高度不固定時只需要添加pading值就可以,不多加討論了。
高度固定時
方法一:父元素設置display: table,子元素設置display:table-cell。利用了表格的特性。
1 .demo { 2 height: 100px; 3 display: table; 4 margin-left: auto; 5 margin-right: auto; 6 } 7 .demo span { 8 display: table-cell; 9 vertical-align: middle; 10 }
方法二:父元素設置position: relative,子元素設置position: absolute。主要是利用了translate的中心是相對于元素本身的特點。
1 .demo { 2 position: relative; 3 height: 100px; 4 } 5 6 .demo span { 7 position: absolute; 8 left: 50%; 9 top: 50%; 10 -webkit-transform: translate(-50%, -50%); 11 -ms-transform: translate(-50%, -50%); 12 transform: translate(-50%, -50%); 13 }
方法三:利用flex布局。
1 .demo { 2 height: 100px; 3 display: -webkit-box; 4 display: -webkit-flex; 5 display: -ms-flexbox; 6 display: flex; 7 -webkit-box-pack: center; 8 -webkit-justify-content: center; 9 -ms-flex-pack: center; 10 justify-content: center; 11 -webkit-box-align: center; 12 -webkit-align-items: center; 13 -ms-flex-align: center; 14 align-items: center; 15 }
方法四:利用:after,:before偽類,結合inline-block的特性實現垂直居中。
1 .demo { 2 height: 100px; 3 text-align: center; 4 } 5 6 .demo:after, .demo:before { 7 display: inline-block; 8 vertical-align: middle; 9 width: 0; 10 height: 100%; 11 visibility: hidden; 12 content: ''; 13 } 14 15 .demo span { 16 display: inline-block; 17 vertical-align: middle; 18 }
暫時就想到這些了。
posted on 2016-04-22 12:30 feishuang008 閱讀(298) 評論(0) 收藏 舉報
浙公網安備 33010602011771號