您好,登錄后才能下訂單哦!
本篇文章為大家展示了CSS如何實現水平垂直居中布局,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
html
<body> <div class="div1"> <div class="box size">垂直水平居中</div> </div> </body>
公共css代碼如下
<style type="text/css"> /* 公共樣式 */ .div1{ width: 300px; height: 300px; border:1px solid aqua; } .box{ background: #00FFFF; } .box.size{ width:100px; height:100px; } </style>
這些css樣式在后續(xù)介紹中默認帶上,不再贅述!
一、 absolute 和 margin auto(常用)
同樣居中元素的寬高必須固定,并且需要得知子元素的寬高
這種方式通過設置各個方向的距離都是0,此時再將margin設為auto,就可以在各個方向上居中了
.div1{ position: relative; } .box{ position: absolute; top:0; left: 0; right: 0; bottom: 0; margin: auto; }
二、absolute 和margin(負值)
簡單說一下原理,利用了絕對定位,絕對定位的百分比是相對于父元素的寬高,所以我們可以根據這個原理將元素居中顯示。但是要注意:絕對定位是基于子元素的左上角來說的,但是要想讓子元素居中顯示,就要解決這個問題。
此時可以利用margin的負值來實現效果,當外邊距為負值時,元素向相反方向定位,這樣我們將子元素的外邊距設置為子元素的寬高的一半就可以實現了。(PS:缺點就是必須得到子元素的寬高)
.div1{ position: relative; } .box{ top: 50%; left: 50%; position: absolute; margin-top: -50px; margin-left: -50px; }
三、absolute 和 calc
同樣需要子元素的寬高固定,并知道寬高,css3具有計算屬性。
top的百分比是基于元素左上角減去寬度的一半即可(PS:依賴calc的兼容性)
.div1{ position: relative; } .box{ position: absolute; top: calc(50% - 50px ); /* 減號前后沒有空格,該樣式不生效*/ left: calc(50% - 50px ); }
當我在寫這段代碼的時候,發(fā)現一個有趣的事情,calc(50%-50px)如果減號前后沒有空格的話,樣式就不會生效,寫上空格的話,就會正常生效了,具體原因我也不太清楚emmmmm
下面的方法將不需要知曉子元素的寬高即可設置
html修改為:
<body> <div class="div1"> <div class="box">水平垂直居中,不需要子元素固定寬高</div> </div> </body>
公共css如下
.div1{ width: 300px; height: 300px; border: 1px solid red; } .box{ background: #00FFFF; }
四、flex(常用)
flex是現代的布局方案僅僅需要幾行代碼即可實現居中效果
.div1{ display: flex; justify-content: center; align-items: center; }
五、line-height
利用行內元素居中屬性也可以做到水平垂直居中。把box設置為行內元素,通過text-align就可以實現水平居中vertical-align 也可以在垂直方向做到居中(PS:這種方法需要在子元素中將文字顯示重置為想要的效果)
.div1{ line-height: 300px; text-align: center; font-size: 0px; } .box{ font-size: 10px; display: inline-block; vertical-align: middle; line-height:initial; /* 修正文字 */ text-align: left; }
六、absolute 和 transform
不需要子元素寬高固定,但是依賴于translate2d的兼容性
.div1{ position: relative; } .box{ position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); }
七、css-table
css新增的table屬性,可以把普通元素改變?yōu)閠able元素的顯示效果,也可以實現水平居中
.div1{ display:table-cell; text-align: center; vertical-align: middle; } .box{ display:inline-block; }
以上就是我總結的一些居中布局的方法了,還有什么其他的歡迎補充!
個人感覺: 我比較喜歡 absolute +margin auto 、flex、absolute 和 transform,移動端最好用flex吧,pc端我喜歡absolute +margin auto
上述內容就是CSS如何實現水平垂直居中布局,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。