最近面試的時候,面試官問到了CSS水平垂直居中佈局的方式,對於剛入前端沒多久的我,無疑是一臉懵逼,閒了趕緊查閱資料分析一波,給各位分享一下,避免落坑。
先說明html和一些基礎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樣式在後續介紹中預設帶上,不再贅述!
一、 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 ); }
當我在寫這段程式碼的時候,發現一個有趣的事情, 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屬性,可以把普通元素改為table元素的顯示效果,也可以實現水平居中
.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實現水平垂直居中佈局的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

選擇Flexbox還是Grid取決於佈局需求:1)Flexbox適用於一維佈局,如導航欄;2)Grid適合二維佈局,如雜誌式佈局。兩者在項目中可結合使用,提升佈局效果。

包含CSS文件的最佳方法是使用標籤在HTML的部分引入外部CSS文件。 1.使用標籤引入外部CSS文件,如。 2.對於小型調整,可以使用內聯CSS,但應謹慎使用。 3.大型項目可使用CSS預處理器如Sass或Less,通過@import導入其他CSS文件。 4.為了性能,應合併CSS文件並使用CDN,同時使用工具如CSSNano進行壓縮。

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcsssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingMultatingMultationMultationProperPertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用CombanningWiThjavoFofofofoftofofo

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他們可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑戰挑戰InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)創造性

使用滾動陰影,尤其是對於移動設備,是克里斯以前涵蓋的一個微妙的UX。傑夫(Geoff)涵蓋了一種使用動畫限制屬性的新方法。這是另一種方式。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版
好用的JavaScript開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具