摘要:水平水平居中有行內元素和塊元素,行內元素有文字圖片鏈接等塊元素主要是等元素。塊元素對于一個塊元素,可以設置其和自動,就像這樣在線查看無論塊元素的寬度是否已知,都可以實現水平居中。
這里主要參考的是CHRIS COYIER寫的一篇的文章(點擊查看),主要講了關于css水平、垂直居中的一些方法,每個方法后面都有一個demo,可以在線查看效果。
1 水平水平居中有行內元素和塊元素,行內元素有文字、圖片、鏈接等;塊元素主要是div、p等block元素。
1.1 行內元素對于行內元素可以使用如下實現水平居中(在線查看demo):
.blocklist1_1 { text-align: center; }
這種方法對于inline,inline-block,inline-table等都有效。
1.2 塊元素對于一個塊元素,可以設置其margin-left和margin-right自動,就像這樣(在線查看demo):
.blocklist1_2 .div1 { margin: 0px auto; }
無論塊元素的寬度是否已知,都可以實現水平居中。
1.3 多個塊元素如果有多個塊元素需要水平居中時,有兩種辦法可以實現。一種是借助inline-block,另一種是借助flex。對于第一種方法可以使用如下方式(在線查看demo),設置塊元素display:inline-block,其父元素水平居中:
..blocklist1_3 .div1 { text-align: center; } .blocklist1_3 .div1 div { display: inline-block; }
用flex的話需要給塊的父元素添加如下樣式(在線查看demo):
.blocklist1_3 .div2 { display: flex; justify-content: center; }2 垂直
垂直居中也分有行內元素和塊元素,不過相比水平居中,垂直居中這里需要討論的情況有點多,下面我們一一分析。
2.1 行內元素 2.1.1 單行對于單行的行內元素,我們只需要設置其padding-top和padding-bottom值相等即可(在線查看demo):
.blocklist2_1_1 .div1 { padding-top: 20px; padding-bottom: 20px; }
如果我們不能設置padding的話,而行內元素的高度(height=50px)已知時,可以設置line-height=height,實現元素的垂直居中(在線查看demo):
.blocklist2_1_1 .div2 { line-height: 50px; height: 50px; }2.1.2 多行
對于多行元素我們有四種方式可以實現垂直居中:
a.可以像上面那樣通過設置padding-top和padding-bottom的值相等來實現垂直居中(demo-1):
.blocklist2_1_2 .div1 { padding: 20px 0px; }
b.可以借助vertical-align屬性來實現垂直居中(demo-2):
.blocklist2_1_2 .div2 { display: table; } .blocklist2_1_2 .div2>div { display: table-cell; vertical-align: middle; }
c.可以借助flex技術來實現垂直居中,只需添加如下樣式(demo-3):
.blocklist2_1_2 .div3 { display: flex; justify-content: center; flex-direction: column; height: 400px; }
d.將一個全高度的偽元素放置在容器內,然后設置文本垂直對齊(demo-4):
.blocklist2_1_2 .div4 { position:relative; } .blocklist2_1_2 .div4::before { content: " "; display: inline-block; height: 100%; width: 1%; vertical-align: middle; } .blocklist2_1_2 .div4>div { display: inline-block; vertical-align: middle; }2.2 塊元素 2.2.1 塊元素高度已知
在網頁布局中有的時候我們知道元素的高度,有的時候我們不知道。對于已知高度的塊元素可以這樣設置來實現垂直居中(demo):
.blocklist2_2_1 .div { position: relative; } .blocklist2_2_1 .div div { position: absoulte; top: 50%; height: 100px; margin-top: -70px; //這里70px是height*1/2 + padding padding: 20px; }2.2.2 塊元素高度未知
有時候我們是不知道塊元素的高度的,這時候可以使用transform來實現(demo):
.blocklist2_2_2 .div { position: relative; } .blocklist2_2_2 .div div { transform: translateY(-50%); top: 50%; position: absoulte; }2.2.3 利用flex實現
除了以上兩種辦法,還可以使用flex實現(demo):
.blocklist2_2_3 .div { display: flex; flex-direction: column; justify-content: center; }3 水平垂直
有的時候我們不僅希望水平居中還希望垂直居中,可以結合以上提到的例子進行組合實現,主要分為以下三個方面:
3.1 元素高度、寬度已知當元素高度和寬度已知時,可以將元素絕對定位,偏移中心50%,然后使用負的margin值實現,如下(demo):
.blocklist3_1 .div { position: relative; } .blocklist3_1 .div div { position: absoulte; top: 50%; left: 50%; margin: -120px 0px 0px -220px; //height一半,width一半,另外加上padding值 height: 200px; width: 400px; padding: 20px; }3.2 元素高度、寬度未知
如果元素的高度和寬度未知呢,我們可以使用變換屬性,在兩個方向賦予50%的負值,如下(demo):
.blocklist3_2 .div { position: relative; } .blocklist3_2 .div div { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }3.3 利用flexbox實現
用flex實現時需要使用兩個中心屬性(demo):
.blocklist3_3 .div { display: flex; justify-content: center; align-items: center; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/49800.html
摘要:水平水平居中有行內元素和塊元素,行內元素有文字圖片鏈接等塊元素主要是等元素。塊元素對于一個塊元素,可以設置其和自動,就像這樣在線查看無論塊元素的寬度是否已知,都可以實現水平居中。 這里主要參考的是CHRIS COYIER寫的一篇的文章(點擊查看),主要講了關于css水平、垂直居中的一些方法,每個方法后面都有一個demo,可以在線查看效果。 1 水平 水平居中有行內元素和塊元素,行內元素...
摘要:在文本前面插入一個高度為百分百的偽元素,讓文本與其垂直對齊。塊級元素或者使用垂直水平居中或者使用 翻譯自 https://css-tricks.com/centering-css-complete-guide/ 預先給出這樣的樣式 .container { width: 100%; height: 200px; background-color: azur...
摘要:絕對底部前端掘金來自國外的設計達人,純,可以實現當正文內容很少時,底部位于窗口最下面。有效解決圖片使用單位邊角缺失的問題前端掘金起因在移動端使用布局時圖片也需要用單位。 CSS 絕對底部 - 前端 - 掘金來自國外的設計達人,純CSS,可以實現: 當正文內容很少時,底部位于窗口最下面。當改變窗口高度時,不會出現重疊問題。甚至,創造該CSS的人還專門成立一個網站介紹這個CSS底部布局方案...
摘要:但是部分瀏覽器存在兼容性的問題。核心代碼寬高不固定水平垂直居中演示使用布局垂直水平居中核心代碼使用布局垂直水平居中演示使用布局垂直水平居中核心代碼使用布局垂直水平居中演示 CSS居中完全指南——構建CSS居中決策樹 showImg(https://segmentfault.com/img/bV8tDq); 本文總結CSS居中,包括水平居中和垂直居中.本文相當于CSS決策樹,下次再遇到...
閱讀 1294·2021-10-08 10:05
閱讀 4107·2021-09-22 15:54
閱讀 3105·2021-08-27 16:18
閱讀 3107·2019-08-30 15:55
閱讀 1436·2019-08-29 12:54
閱讀 2748·2019-08-26 11:42
閱讀 543·2019-08-26 11:39
閱讀 2129·2019-08-26 10:11