2 水平垂直居中水平垂直居中 3 div> 1 html,body{ 2 margin: 0; 3 } 4 .wrap{ 5 line-height: 400px; 6 text-a" />
line-height + text-align:center
12 水平垂直居中水平垂直居中 3
1 html,body{ 2 margin: 0; 3 } 4 .wrap{ 5 line-height: 400px; 6 text-align:center; 7 8 height: 400px; 9 font-size: 36px; 10 background-color: #ccc; 11 }
2.利用盒模型的水平垂直居中
我們一般講的盒模型都是說的塊級盒的盒模型,也只有塊級盒的盒模型用得多一點,塊級盒block-level box又是分別由content-box、padding-box、border-box、margin-box組成的,如下圖:
用css3的calc()動態(tài)計算:
12 3
1 .wrap{ 2 margin-top: 20px; 3 margin-left: auto; 4 margin-right: auto; 5 width: 400px; 6 height: 400px; 7 background-color: #ccc; 8 .content{ 9 padding: -webkit-calc(~"(100% - 100px) / 2"); 10 padding: calc(~"(100% - 100px) / 2"); 11 width: 100px; 12 height: 100px; 13 background-color: #333; 14 background-clip: content-box; 15 } 16 }
注意這里我在calc中使用了一個~""的寫法,這是less中的一個語法,告訴less這里不被less所編譯,要是被less編譯了的話,css的calc函數的參數就不是100% - 100px,而是0%了。
3.使用絕對定位居中
1 2 絕對對位原理:元素在過度受限情況下,將margin設置為auto,瀏覽器會重算margin的值,
過度受限指的是同時設置top/bottom與height或者left/right與width。 3 4
絕對對位原理:元素在過度受限情況下,將margin設置為auto,瀏覽器會重算margin的值,過度受限指的是同時設置top/bottom與height或者left/right與width。
1 .absolute_center{
position:absolute;
width:200px;
height:200px;
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
background:#518fca;
overflow:auto;
resize:both;/*用于設置了所有除overflow為visible的元素*/
}
使用絕對定位要求元素必須設置明確高度。內容超過元素高度時需要設置overflow決定滾動條的出現(xiàn)
優(yōu)點:支持響應式,只有這種方法在resize之后仍然垂直居中
缺點:沒有顯式設置overflow時,內容超過元素高度時會溢出,沒有滾動條
4.負marginTop方式
已知元素高度后,使用絕對定位將top設置為50%,mergin-top設置為內容高度的一半(height + padding) / 2;內容超過元素高度時需要設置overflow決定滾動條的出現(xiàn)
原理:top:50%元素上邊界位于包含框中點,設置負外邊界使得元素垂直中心與包含框中心重合;
1 .negative_margin_top{
width:200px;
height:200px;
position:absolute;
top:50%;
left:0;
right:0;
margin:auto;
margin-top:-100px; /*-(height+padding)/2*/ }
優(yōu)點:代碼量少、瀏覽器兼容性高支持ie6 ie7
缺點:不支持響應式(不能使用百分比、min/max-width)
5.借助額外元素floater
元素高度已知,在center元素外插入一個額外元素floater,設置floater的height為50%;margin-bottom為center元素高度的一半(height + padding) / 2。內容超過元素高度時需要設置overflow決定滾動條的出現(xiàn)。
原理與2方法類似,floater的下邊界是包含框的中心線,負下外邊界保證center的中心線與包含框中心線重合。
12 3元素高度已知,在center元素外插入一個額外元素floater,設置floater的height為50%;4
margin-bottom為center元素高度的一半(height + padding) / 2。內容超過元素高度時需要設置overflow決定滾動條的出現(xiàn)。
1 .floater{
height:50%;
margin-bottom:-100px;
} 2 .floater_center{
height:200px;
width:200px;
margin:auto;
}
優(yōu)點:瀏覽器兼容性好,兼容舊版本IE
缺點:需要額外元素,不支持響應式(不能使用百分比、min/max-width)
6.table-cell方式
將center元素的包含框display設置為table,center元素的display設置為table-cell,vertical-align設置為middle。
原理:利用表布局特點,vertical-align設置為middle后,單元格中內容中間與所在行中間對齊
1 .container2{
display:table;
height:100%;
} 2 .table_cell{
/*將cell垂直居中,如果外層div不為table則tablecell必須有高度*/
display:table-cell;
vertical-align:middle;
}
優(yōu)點:支持任意內容的可變高度、支持響應式
缺點:每一個需要垂直居中的元素都會需要加上額外標簽(需要table、table-cell兩個額外元素)
7.inline-block方式
將center元素display設置為inline-block,vertical-align設置為middle,為包含框設置after偽元素,將偽元素display設置為inline-block,vercial-align設置為middle,同時設置height為100%,撐開容器。
原理:為同一行的inline-block元素設置vertical-align:middle,該行內的inline-block元素會按照元素的垂直中心線對齊。
生命里有著多少的無奈和惋惜,又有著怎樣的愁苦和感傷?
雨浸風蝕的落寞與蒼楚一定是水,靜靜地流過青春奮斗的日子和觸摸理想的歲月。
1 .container{display:block;} 2 /*inline-block的前世今生*/ 3 .container:after{content: '';
display: inline-block;
vertical-align: middle;
height: 100%;
} 4 .inline_block{
display:inline-block;
vertical-align:middle;
}
優(yōu)點:支持響應式、支持可變高度
缺點:會加上額外標記
6.line-height方式
該方式只適用于情況比較簡單的單行文本,將line-height設置與元素高度同高。
原理:如果line-height高度大于font-size,生于高度瀏覽器會平分到文字上下兩端。
1其實我們每個人的生活都是一個世界,即使最平凡的人也要為他生活的那個世界而奮斗。 2
1 .single_line{
height: 30px;
font-size: 14px;
line-height: 30px;
border: 1px solid #518dca;
}
優(yōu)點:簡單明了
缺點:只適用于單行文本,局限性大
7.彈性盒式布局
利用彈性盒式布局,將字元素的主軸、側軸的排列方式都設置為居中對齊
原理:CSS彈性盒
12既要腳踏實地于現(xiàn)實生活,又要不時跳出現(xiàn)實到理想的高臺上張望一眼。5
在精神世界里建立起一套豐滿的體系,引領我們不迷失不懈怠。
待我們一覺醒來,跌落在現(xiàn)實中的時候,可以毫無怨言地勇敢地承擔起生活重擔。
這是孫少平教給我的道理。
只能永遠把艱辛的勞動看做生命的必要,即使沒有收獲的指望,也心平氣靜地繼續(xù)耕種。
3 要做到這一點,路還好長。 4
1 .is-Flexbox {display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items: center;
-webkit-justify-content: center;
justify-content: center;
}
優(yōu)點:真正的垂直居中布局
缺點:ie11才開始支持彈性布局
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com