方法:1、利用flex佈局,將ustify-content和align-items屬性都設定為center來實現居中;2、利用transform和position屬性來實現居中;3、使用table-cell,利用table的單元格居中效果。
本教學操作環境: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 以上。
更多程式相關知識,請造訪:程式設計入門! !
以上是css怎麼實現不定寬水平居中的詳細內容。更多資訊請關注PHP中文網其他相關文章!