日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

完美實現CSS垂直居中的11種方法

瀏覽:408日期:2022-06-02 17:23:20

本人前端小白,正在做一個小程序開發的項目,css樣式調整搞的頭都大了。關于垂直居中,已嘗試了文中的幾個垂直居中css樣式設置,已成功解決我的問題,故轉載來備份下。

CSS垂直居中11種實現方法分別如下:

1. 使用絕對定位和負外邊距對塊級元素進行垂直居中

html代碼:

<div id="box">  <div id="child">我是測試DIV</div></div></pre>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  position: relative;} #child {  width: 150px;  height: 100px;  background: orange;  position: absolute; top: 50%;  margin: -50px 0 0 0;  line-height: 100px;}

運行結果如下:

這個方法兼容性不錯,但是有一個小缺點:必須提前知道被居中塊級元素的尺寸,否則無法準確實現垂直居中。

2. 使用絕對定位和transform

html代碼:

<div id="child"> 我是一串很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長的文本 </div></pre>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  position: relative;} #child {  background: #93BC49;  position: absolute;  top: 50%;  transform: translate(0, -50%);}

運行結果如下:

這種方法有一個非常明顯的好處就是不必提前知道被居中元素的尺寸了,因為transform中translate偏移的百分比就是相對于元素自身的尺寸而言的。

3. 另外一種使用絕對定位和負外邊距進行垂直居中的方式

html代碼:

<div id="box">  <div id="child">我也是個測試DIV</div></div></pre>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  position: relative;} #child {  width: 50%;  height: 30%;  background: pink;  position: absolute;  top: 50%;  margin: -15% 0 0 0;}

運行結果如下:

這種方式的原理實質上和前兩種相同。補充的一點是:margin的取值也可以是百分比,這時這個值規定了該元素基于父元素尺寸的百分比,可以根據實際的使用場景來決定是用具體的數值還是用百分比。

4. 絕對定位結合margin: auto

html代碼:

<div id="box">  <div id="child">呆呆今天退役了(。﹏。)</div></div></pre>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  position: relative;} #child {  width: 200px;  height: 100px;  background: #A1CCFE;  position: absolute; top: 0;  bottom: 0;  margin: auto;  line-height: 100px;}

運行結果如下:

這種實現方式的兩個核心是:把要垂直居中的元素相對于父元素絕對定位,top和bottom設為相等的值,我這里設成了0,當然你也可以設為99999px或者-99999px無論什么,只要兩者相等就行,這一步做完之后再將要居中元素的margin設為auto,這樣便可以實現垂直居中了。

被居中元素的寬高也可以不設置,但不設置的話就必須是圖片這種自身就包含尺寸的元素,否則無法實現。

5. 使用padding實現子元素的垂直居中

html代碼:

<div id="box">  <div id="child">今天西安的霾嚴重的嚇人,剛看了一眼PM2.5是422</div></div>css代碼:#box {  width: 300px;  background: #ddd;  padding: 100px 0;} #child {  width: 200px;  height: 100px;  background: #F7A750;  line-height: 50px;}

運行結果如下:

這種實現方式非常簡單,就是給父元素設置相等的上下內邊距,則子元素自然是垂直居中的,當然這時候父元素是不能設置高度的,要讓它自動被填充起來,除非設置了一個正好等于上內邊距+子元素高度+下內邊距的值,否則無法精確的垂直居中。

這種方式看似沒有什么技術含量,但其實在某些場景下也是非常好用的。

6. 設置第三方基準

html代碼:

<div id="box">  <div id="base"></div>  <div id="child">今天寫了第一篇博客,希望可以堅持寫下去!  </div></div>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;} #base {  height: 50%;  background: #AF9BD3;} #child {  height: 100px;  background: rgba(131, 224, 245, 0.6);  line-height: 50px;  margin-top: -50px;}

運行結果如下:

這種方式也非常簡單,首先設置一個高度等于父元素高度一半的第三方基準元素,那么此時該基準元素的底邊線自然就是父元素縱向上的中分線,做完這些之后再給要垂直居中的元素設置一個margin-top,值的大小是它自身高度的一半取負,則實現垂直居中。

7. 使用flex布局

html代碼:

<div id="box">霧霾天氣,太久沒有打球了</div>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  display: flex;  align-items: center;}

運行結果如下:

這種方式同樣適用于塊級元素:

html代碼:

<div id="box">  <div id="child"> 程序員怎么才能保護好眼睛? </div></div>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  display: flex;  align-items: center;}#child {  width: 300px;  height: 100px;  background: #8194AA;  line-height: 100px;}

運行結果如下:

flex布局(彈性布局/伸縮布局)里門道頗多,這里先針對用到的東西簡單說一下,想深入學習的小伙伴可以去看阮一峰老師的博客。(http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html)

flex也就是flexible,意為靈活的、柔韌的、易彎曲的。

元素可以通過設置display:flex;將其指定為flex布局的容器,指定好了容器之后再為其添加align-items屬性,該屬性定義項目在交叉軸(這里是縱向軸)上的對齊方式,可能的取值有五個,分別如下:

flex-start::交叉軸的起點對齊;

flex-end:交叉軸的終點對齊;

center:交叉軸的中點對齊;

baseline:項目第一行文字的基線對齊;

stretch(該值是默認值):如果項目沒有設置高度或者設為了auto,那么將占滿整個容器的高度。

8. 第二種使用彈性布局的方式

html代碼:

<div id="box">  <div id="child"> 答案當然是多用綠色的背景哈哈 </div></div>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  display: flex;  flex-direction: column;  justify-content: center;} #child {  width: 300px;  height: 100px;  background: #08BC67;  line-height: 100px;}

運行結果如下:

這種方式也是首先給父元素設置display:flex,設置好之后改變主軸的方向flex-direction: column,該屬性可能的取值有四個,分別如下:

row(該值為默認值):主軸為水平方向,起點在左端;

row-reverse:主軸為水平方向,起點在右端;

column:主軸為垂直方向,起點在上沿;

column-reverse:主軸為垂直方向,起點在下沿。

justify-content屬性定義了項目在主軸上的對齊方式,可能的取值有五個,分別如下(不過具體的對齊方式與主軸的方向有關,以下的值都是假設主軸為從左到右的):

flex-start(該值是默認值):左對齊;

flex-end:右對齊;

center:居中對齊;

space-between:兩端對齊,各個項目之間的間隔均相等;

space-around:各個項目兩側的間隔相等。

9. 使用 line-height 對單行文本進行垂直居中

html代碼:

<div id="box"> 我是一段測試文本 </div>css代碼:#box{  width: 300px;  height: 300px;  background: #ddd;  line-height: 300px;}

運行結果如下:

這里有一個小坑需要大家注意:line-height(行高) 的值不能設為100%,我們來看看官方文檔中給出的關于line-height取值為百分比時候的描述:基于當前字體尺寸的百分比行間距。所以大家就明白了,這里的百分比并不是相對于父元素尺寸而言,而是相對于字體尺寸來講的。

10. 使用 line-height 和 vertical-align 對圖片進行垂直居中

html代碼:

<div id="box">  <img src="duncan.jpeg"></div>css代碼:#box{  width: 300px;  height: 300px;  background: #ddd;  line-height: 300px;} #box img {  vertical-align: middle;}

運行結果如下:

vertical-align并不像看起來那樣天真無邪童叟無欺,以后會單獨拎出來專門寫一篇。

11. 使用 display 和 vertical-align 對容器里的文字進行垂直居中

html代碼:

<div id="box">  <div id="child">我也是一段測試文本</div></div>css代碼:#box {  width: 300px;  height: 300px;  background: #ddd;  display: table;} #child {  display: table-cell;  vertical-align: middle;}

運行結果如下:

這里關于vertical-align啰嗦兩句:vertical-align屬性只對擁有valign特性的html元素起作用,例如表格元素中的<td><th>等等,而像<div><span>這樣的元素是不行的。

valign屬性規定單元格中內容的垂直排列方式,語法:<td valign="value">,value的可能取值有四種:

top:對內容進行上對齊

middle:對內容進行居中對齊

bottom:對內容進行下對齊

baseline:基線對齊

關于baseline值:基線是一條虛構的線。在一行文本中,大多數字母以基線為基準。baseline 值設置行中的所有表格數據都分享相同的基線。該值的效果常常與 bottom 值相同。不過,如果文本的字號各不相同,那么 baseline 的效果會更好。

上次已經為大家介紹了 實現css文字垂直居中的8種方法 這篇文章又為大家新增了3種CSS垂直居中的方法,更多關于CSS垂直居中的方法請閱讀下面的相關文章

標簽: CSS HTML
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
美女精品在线观看| 午夜欧美理论片| 你懂的亚洲视频| 欧美日韩精品免费观看视欧美高清免费大片 | 午夜在线精品偷拍| 天堂а√在线最新版中文在线| 国产日韩中文在线中文字幕| 久热精品在线| 中文一区一区三区免费在线观 | 五月天综合网站| 亚洲成av在线| 国产高清精品二区| 久久精品网址| 国产成人免费| 国内精品伊人| 久久久久久久久久久9不雅视频| 欧美一级鲁丝片| 精品一区在线| 国产精品nxnn| 色爱综合av| 丝袜脚交一区二区| 欧美日韩日本国产亚洲在线| 久久国产66| 美女久久久久久| 亚洲韩日在线| 久久精品国产成人一区二区三区| 免费观看亚洲| 日本亚洲最大的色成网站www | 国产伦一区二区三区| 国产精品第十页| 欧美不卡视频| 国产探花一区| 在线日韩欧美| 免费不卡在线观看| 成人午夜亚洲| 日本午夜精品视频在线观看| 久久免费高清| 中文字幕人成乱码在线观看| 一区二区日韩免费看| 国产一区二区三区四区大秀| 色婷婷久久久| 国产精品一区2区3区| 欧美一级鲁丝片| 美女视频网站久久| 欧美激情综合| 亚洲欧洲美洲国产香蕉| 日韩伦理一区| 日韩三级精品| 成人av二区| 在线看片国产福利你懂的| 久久av在线| 亚洲精品888| 精品国产精品国产偷麻豆| 亚洲精品极品| 国产欧美日韩一区二区三区四区| 免费av一区| 日韩久久视频| 香蕉久久99| 亚洲成av在线| 快播电影网址老女人久久| 日韩欧美中文字幕一区二区三区 | 91中文字幕精品永久在线| 国产精品玖玖玖在线资源| 99视频+国产日韩欧美| 欧美日韩中文一区二区| 欧美久久久网站| 欧美久久一区二区三区| 欧美一区激情| 91午夜精品| 亚洲精品在线a| 国产精品99久久免费| 欧美一区不卡| 精品视频91| 国产精品**亚洲精品| 国产精品探花在线观看| 国产精品呻吟| 亚洲精品字幕| 国产免费久久| 国产欧美视频在线| 国产一区二区三区探花| 国产91在线精品| 亚洲网站视频| 亚洲精选av| 亚洲精品伊人| 国产精品自拍区| 7m精品国产导航在线| 美女精品久久| 999久久久免费精品国产| 欧美不卡高清| 亚洲精选91| 亚洲日本在线观看视频| 国产精品观看| 日韩电影免费网站| 狠狠干成人综合网| 日韩一区二区三区在线看| 国产精品一二| 日韩精品dvd| 99国产一区| 国产乱子精品一区二区在线观看| 伊人久久国产| 亚洲免费福利一区| 精品高清久久| 在线视频亚洲欧美中文| 老司机精品在线| 久久国产福利| 日韩.com| 国产欧美一区二区三区精品观看| 日韩欧美三级| 欧美日本二区| 亚洲在线免费| 国产精品精品| 亚洲在线观看| 97精品国产| 黄色欧美日韩| av免费不卡国产观看| 亚洲大全视频| 人人草在线视频| 日韩福利视频导航| 黄色亚洲免费| 欧美aa在线视频| 美女被久久久| 国内自拍视频一区二区三区| 亚洲精品人人| 欧美特黄一区| 久久国产影院| 成人美女视频| 欧美激情三区| 天堂网在线观看国产精品| 国产一区二区视频在线看| 亚洲一区二区三区四区电影| 99riav1国产精品视频| 九一国产精品| 在线中文字幕播放| 久久精品免费看| 日本一区二区免费高清| 国产乱码精品| 男人的天堂久久精品| 欧美日韩国产免费观看| 亚洲啊v在线| 美女福利一区二区三区| 国产精品99精品一区二区三区∴| 日韩三级精品| 综合色一区二区| 尤物精品在线| 日韩精品视频网站| 国产精品igao视频网网址不卡日韩 | 国产欧美一区二区三区国产幕精品 | 激情中国色综合| 国产精品久久乐| 福利片在线一区二区| 国产精品二区不卡| 精品中文在线| 国产一区二区亚洲| 99精品在线| 欧美日本不卡高清| 国产网站在线| 欧美香蕉视频| 日本亚洲三级在线| 日韩国产欧美三级| 久久精品国产www456c0m| 免费在线视频一区| 国产精品社区| 国产精品成人3p一区二区三区| 高清一区二区| 国产精品婷婷| 精品一区视频| 久久精品高清| 国产色噜噜噜91在线精品 | 亚洲成人三区| 精品高清久久| 先锋影音国产一区| 亚洲欧洲美洲av| 99riav1国产精品视频| 精品不卡一区| 日本欧美韩国一区三区| 日本精品不卡| 国产欧美日本| 亚洲男女av一区二区| 精品一区二区三区亚洲| 亚洲免费观看| 久久五月天小说| 成人午夜毛片| 日韩欧美久久| 日韩视频一区| 日韩中文在线电影| 国产福利电影在线播放| 青青草伊人久久| 国产亚洲在线观看| 欧美日韩精品免费观看视欧美高清免费大片| 99riav1国产精品视频| 亚洲电影有码| 久久一区精品| 欧美另类中文字幕| 日产欧产美韩系列久久99| 欧美国产美女| 国产精选在线| 老司机免费视频一区二区三区| 日韩一区精品| 欧美aa在线视频| 精品国产a一区二区三区v免费|