成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【第1期】聊聊css居中那點(diǎn)事

劉永祥 / 2116人閱讀

摘要:前言居中是網(wǎng)頁(yè)布局中再常見不過(guò)的一種方式了,今天我們就來(lái)聊聊居中的那點(diǎn)事。我是水平居中的同樣是針對(duì)塊級(jí)元素才有效果。來(lái)看代碼我是水平居中的必須配合來(lái)使用來(lái)可以實(shí)現(xiàn)居中的效果。方法二我是垂直居中的注意此方法要考慮的兼容性問(wèn)題。

前言:居中是網(wǎng)頁(yè)布局中再常見不過(guò)的一種方式了,今天我們就來(lái)聊聊css居中的那點(diǎn)事。

我們主要從這幾個(gè)方面來(lái)了解下居中:

水平居中

垂直居中

水平垂直居中

水平居中

水平居中又分為:

文字水平居中

圖片水平居中

已知元素寬度的水平居中

未知元素寬度的水平居中

文字水平居中

實(shí)現(xiàn)文字的水平居中,是最為簡(jiǎn)單的了,加上text-align: center;即可,看以下代碼:

文字水平居中

.text-center {
  text-align: center;
}
注意:父元素必須是塊級(jí)元素,即display: block;至于什么是塊級(jí)元素,不在本文討論的范圍
圖片水平居中

圖片水平居中跟文字一樣,也是使用text-align: center;

非圖片文本元素,已知寬度的水平居中 方法一:margin: 0 auto;

比如div元素,假設(shè)我們已經(jīng)知道它的寬度是300px,這時(shí)候我們就可以這樣設(shè)置,加上margin: 0 auto;這句代碼。

我是水平居中的div
.div1 {
  width: 300px;
  margin: 0 auto;
}

同樣是針對(duì)塊級(jí)元素才有效果。

方法二:絕對(duì)定位+負(fù)邊距
.parent3 {
  position: relative;
}

.child3 {
  position: absolute;
  left: 50%;
  width: 300px;
  margin-left: -150px;  // 寬度的一半
}
非圖片文本元素,未知寬度的水平居中 方法一:使用text-align: center + inline-block

我覺(jué)得比較簡(jiǎn)單的方法就是給父元素設(shè)置text-align: center;給子元素添加display: inline-block;這樣就行了,還是來(lái)看代碼比較直接。

未知元素寬度
.parent {
  text-align: center;
}

.child {
  display: inline-block;
  padding: 20px;
  background: red;
}
方法二:使用絕對(duì)定位 + transform: translate()

父元素設(shè)置相對(duì)定位position: relative;;子元素設(shè)置絕對(duì)定位position: absolutetransform??匆韵吕樱?/p>

我是水平居中的div
.parent {
  position: relative;
}

.child {
  position: absolute;
  left: 50%;
  -webkit-transform: translate(-50%, 0);
  transform: translate(-50%, 0);
  padding: 20px;
  background: red;
}
注意:為了更好的兼容性,transform需要加上不同瀏覽器的前綴。
方法三:使用浮動(dòng)

還是來(lái)看具體的代碼:

我是水平居中的div
.parent2 {
  position: relative;
  float: left;
  left: 50%;
}

.child2 {
  position: relative;
  right: 50%;
  padding: 20px;
  background: red;
}
方法四:flex實(shí)現(xiàn)水平居中
我是水平居中的div
.parent4 {
  position: relative;
  display: flex;
  justify-content: center;
}

.child4 {
  padding: 20px;
  background: red;
}
注意:flex有兼容性問(wèn)題,關(guān)于flex的兼容性寫法,大家可以自行百度下,也可以在caniuse查看瀏覽器的兼容情況
方法五:fit-content屬性

“fit-content”是CSS中給“width”屬性新加的一個(gè)屬性值,他配合margin可以讓我輕松的實(shí)現(xiàn)水平居中的效果。這個(gè)方法也是我第一次用到,后期有時(shí)間再來(lái)仔細(xì)研究學(xué)習(xí)下。

來(lái)看代碼:

我是水平居中的div
.fitContentDiv {
  width: fit-content;
  margin: 0 auto;
  height: 100px;
  background: red;
  padding: 20px;
}

必須配合margin: 0 auto;來(lái)使用來(lái)可以實(shí)現(xiàn)居中的效果。

注意:同樣是存在瀏覽器的兼容性問(wèn)題。
垂直居中

文字的垂直居中

圖片的垂直居中

已知元素高度的垂直居中

未知元素高度的垂直居中

文字的垂直居中 方法一:height=line-height

這個(gè)比較簡(jiǎn)單,只需要設(shè)置高度height和行高line-height相等即可??创a:

我是垂直居中的文字

.txt1 {
  height: 100px;
  line-height: 100px;
  background: red;
}
注意:這個(gè)方法有個(gè)不好的地方就是只能是針對(duì)單行的文字,多行就不適合用。
方法二:使用padding

我們?cè)O(shè)置padding-toppadding-bottom相等就可以了,而且此方法針對(duì)多行文字也沒(méi)問(wèn)題??创a:

我是垂直居中的文字

.txt2 {
  padding-top: 20px;
  padding-bottom: 20px;
  background: red;
}
注意:這種方法也是有一個(gè)明顯的缺陷,就是你不能給文本的父元素設(shè)置高度。
方法三:table+table-cell

此方法是利用表格單元格的特性,我們直接看代碼:

我是垂直居中的文字(這里面也可以放圖片)
.parent6 {
  display: table;
  width: 300px;
  height: 300px;
  background: blue;
}

.child6 {
  display: table-cell;
  vertical-align: middle;
}

此方法對(duì)圖片同樣有效,而且文本也可以多行,是一種不錯(cuò)的方法。

圖片的垂直居中

使用vertical-align: middle,直接看代碼:

.img-va-center {
  height: 300px;
  line-height: 300px;
  background: red;
}

.img-va-center img {
  display: inline-block;
  vertical-align: middle;
}
已知元素高度的垂直居中 方法一:絕對(duì)定位+負(fù)邊距

看代碼:

我是垂直居中的div
.parent6 {
  position: relative;
  height: 300px;
  background: red;
}

.child6 {
  position: absolute;
  top: 50%;
  left: 0;
  width: 50px;
  height: 50px;
  margin-top: -25px;
  background: gray;
}
未知元素高度的垂直居中 方法一:絕對(duì)定位+transform

直接上代碼了:

我是垂直居中的div
.parent7 {
  position: relative;
  width: 300px;
  height: 300px;
  background: red;
}

.child7 {
  position: absolute;
  top: 50%;
  width: 50px;
  padding: 10px;
  background: gray;
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
}
注意:同樣需要考慮transform的兼容性問(wèn)題。
方法二:flex+margin
我是垂直居中的div
.parent8 {
  display: flex;
  width: 300px;
  height: 300px;
  background: blue;
}

.child8 {
  margin: auto;
  padding: 20px;
  background: gray;
}
注意:此方法要考慮flex的兼容性問(wèn)題。
方法三:flex+align-items
我是垂直居中的div
.parent9 {
  display: flex;
  align-items: center;
  width: 300px;
  height: 300px;
  background: blue;
}

.child9 {
  padding: 20px;
  background: gray;
}
注意:此方法要考慮flex的兼容性問(wèn)題。
水平垂直居中

水平垂直居中就是把水平居中跟垂直居中的方法結(jié)合起來(lái)使用啦,這里就不再舉例了。

總結(jié)

這里雖然列舉了那么多例子,但是方法終歸是死的,業(yè)務(wù)需求是變化多端的,具體還是要根據(jù)我們項(xiàng)目的業(yè)務(wù)需求來(lái)搭配使用。css很強(qiáng)大,要實(shí)現(xiàn)同一個(gè)功能,可以有很多種方法,并不只有我列舉的這些,關(guān)鍵是要找到適合業(yè)務(wù)需求的方法,如果你有更好的方法,歡迎留言討論,大家一起學(xué)習(xí)進(jìn)步!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/117192.html

相關(guān)文章

  • 查漏補(bǔ)缺 - 收藏集 - 掘金

    摘要:醞釀許久之后,筆者準(zhǔn)備接下來(lái)撰寫前端面試題系列文章,內(nèi)容涵蓋瀏覽器框架分鐘搞定常用基礎(chǔ)知識(shí)前端掘金基礎(chǔ)智商劃重點(diǎn)在實(shí)際開發(fā)中,已經(jīng)非常普及了。 這道題--致敬各位10年阿里的前端開發(fā) - 掘金很巧合,我在認(rèn)識(shí)了兩位同是10年工作經(jīng)驗(yàn)的阿里前端開發(fā)小伙伴,不但要向前輩學(xué)習(xí),我有時(shí)候還會(huì)選擇另一種方法逗逗他們,拿了網(wǎng)上一道經(jīng)典面試題,可能我連去阿里面試的機(jī)會(huì)都沒(méi)有,但是我感受到了一次面試1...

    YuboonaZhang 評(píng)論0 收藏0
  • 聊聊加密點(diǎn)事——PHP加密最佳實(shí)踐

    摘要:所謂對(duì)稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點(diǎn)之一。非對(duì)稱加密算法由于對(duì)稱加密在通信加密領(lǐng)域的缺陷,年和提出了非對(duì)稱加密的概念。非對(duì)稱加密,其主要缺點(diǎn)之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個(gè)動(dòng)作或者過(guò)程,其目的就是將一段明文信息(人類或機(jī)器可以直接讀懂的信息)變?yōu)橐欢慰瓷先](méi)有任何意義的字符,必須通過(guò)事先約定的解密規(guī)則才能將...

    lcodecorex 評(píng)論0 收藏0
  • 聊聊加密點(diǎn)事——PHP加密最佳實(shí)踐

    摘要:所謂對(duì)稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點(diǎn)之一。非對(duì)稱加密算法由于對(duì)稱加密在通信加密領(lǐng)域的缺陷,年和提出了非對(duì)稱加密的概念。非對(duì)稱加密,其主要缺點(diǎn)之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個(gè)動(dòng)作或者過(guò)程,其目的就是將一段明文信息(人類或機(jī)器可以直接讀懂的信息)變?yōu)橐欢慰瓷先](méi)有任何意義的字符,必須通過(guò)事先約定的解密規(guī)則才能將...

    Mr_zhang 評(píng)論0 收藏0
  • 2017-10-10 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選第期寫給前端應(yīng)屆生的職業(yè)規(guī)劃建議應(yīng)用編譯優(yōu)化之路進(jìn)階篇命名空間模式解析源碼解析之任務(wù)管理入門教程快速上手聊聊改變歷史中文正式發(fā)布,帶來(lái)種新的圖表類型關(guān)系圖解好好寫代碼吧使用手冊(cè)掘金發(fā)布在即將全面支持掘金仿懂球帝 2017-10-10 前端日?qǐng)?bào) 精選 【第1074期】寫給前端應(yīng)屆生的職業(yè)規(guī)劃建議webpack 應(yīng)用編譯優(yōu)化之路JS進(jìn)階篇--命名空間模式解析gulp源碼解析之任...

    myshell 評(píng)論0 收藏0
  • 移動(dòng)端開發(fā):架構(gòu)點(diǎn)事!

    摘要:移動(dòng)精英開發(fā)社群的第期,也是圍繞架構(gòu)這個(gè)話題進(jìn)行討論。本次我們希望結(jié)合實(shí)際開發(fā)中遇到的問(wèn)題,來(lái)聊聊移動(dòng)端的架構(gòu)設(shè)計(jì)。這樣的模式改進(jìn)一些,可能會(huì)更適合移動(dòng)端架構(gòu)。潘衛(wèi)杰之前我們公司移動(dòng)端的大項(xiàng)目就是插座式開發(fā)的,批量出各個(gè)行業(yè)的。 此前,58 同城的技術(shù)委員會(huì)執(zhí)行主席沈劍在 OneAPM 的技術(shù)公開課上分享過(guò)一個(gè)主題,「好的架構(gòu)不是設(shè)計(jì)出來(lái)的,而是演技出來(lái)的」。因?yàn)閷?duì)很多創(chuàng)業(yè)公司而言,隨...

    KnewOne 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

劉永祥

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<