方法:1、利用flex布局,將ustify-content和align-items屬性都設置為center來實現居中;2、利用transform和position屬性來實現居中;3、使用table-cell,利用table的單元格居中效果。
本教程操作環(huán)境:Windows7系統、css3版本,該方法適用于所有品牌電腦。
推薦:《css視頻教程》
css實現不定寬水平居中
方法1:利用flex
大家的第一反應,可能就是 flex 了。因為它的寫法夠簡單直觀,兼容性也沒什么問題。是手機端居中方式的首選。
<div class="wrapper flex-center"> <p>horizontal and vertical</p> </div>
.wrapper { width: 300px; height: 300px; border: 1px solid #ccc; } .flex-center { display: flex; justify-content: center; align-items: center; }
利用到了 2 個關鍵屬性:justify-content 和 align-items,都設置為 center,即可實現居中。
需要注意的是,一定要把這里的 flex-center 掛在父級元素,才能使得其中 唯一的 子元素居中。
方法2:利用transform + position
這個組合,常用于圖片的居中顯示。
<div class="wrapper"> <img src="test.png"> </div>
.wrapper { width: 300px; height: 300px; border: 1px solid #ccc; position: relative; } .wrapper > img { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
當然,也可以將父元素 wrapper 的相對定位,移入子元素 img 中,替換掉絕對定位。效果是一樣的。
方法3:table-cell
利用 table 的單元格居中效果展示。與 flex 一樣,需要寫在父級元素上。
<div class="wrapper"> <p>horizontal and vertical</p> </div>
.wrapper { width: 300px; height: 300px; border: 1px solid #ccc; display: table-cell; text-align: center; vertical-align: middle; }
方法4:grid
像表格一樣,網格布局讓我們能夠按行或列來對齊元素。 然而在布局上,網格比表格更可能做到或更簡單。
<div class="wrapper"> <p>horizontal and vertical</p> </div>
.wrapper { width: 300px; height: 300px; border: 1px solid #ccc; display: grid; } .wrapper > p { align-self: center; justify-self: center; }
但它在兼容性上不如 flex,特別是 IE 瀏覽器,只支持 IE10 及以上。