摘要:水平居中行內(nèi)元素的水平居中在父元素中設(shè)置只對內(nèi)聯(lián)元素或行內(nèi)塊元素有效需要放置于父元素中塊級元素的水平居中只對塊級元素有效指的是自適應(yīng)寬度。參考張鑫旭實(shí)現(xiàn)絕對定位元素的居中及原理居中方式水平居中垂直居中塊級元素設(shè)置內(nèi)聯(lián)元素設(shè)置。
原文地址:https://www.xksblog.top/CSS-mainstream-centering-techniques.html
幾個(gè)月也零零散散學(xué)了不少CSS居中技術(shù),每到用的時(shí)候,發(fā)現(xiàn)總是稀里糊涂的,有時(shí)不知道該選用哪種技術(shù),有時(shí)候又常常把方法搞混,索性好好整理一下,以后查閱回顧也更方便。這里只簡單總結(jié)了大部分主流的居中方法,如果有發(fā)現(xiàn)更加牛皮好用的,會不斷的更新進(jìn)來。
水平居中 行內(nèi)元素的水平居中text-align:center(在父元素中設(shè)置)
只對內(nèi)聯(lián)元素或行內(nèi)塊元素有效
需要放置于父元素中
塊級元素的水平居中margin: 0 auto;
只對塊級元素有效
auto指的是自適應(yīng)寬度。實(shí)質(zhì)就是均分了元素左右的剩余空間,所以元素會居中。
auto只有在塊級元素設(shè)置了寬度width才有效(塊級元素不設(shè)寬度默認(rèn)就占整行了,所以是廢話)
auto無法實(shí)現(xiàn)塊級元素的垂直居中,原因與CSS默認(rèn)的高度計(jì)算規(guī)則有關(guān),這里暫不深究。但margin:auto可以實(shí)現(xiàn)絕對定位元素的水平垂直居中,見下文。
參考:為什么margin為auto不能垂直居中?、為什么「margin:auto」可以讓塊級元素水平居中?、張鑫旭——margin:auto實(shí)現(xiàn)絕對定位元素的居中及原理
垂直居中 行內(nèi)元素的垂直居中line-height: 父元素的高度;(在父元素中設(shè)置)
只對內(nèi)聯(lián)元素或行內(nèi)塊元素有效
需要知道父元素的高度
需要放置于父元素中
適用于垂直方向上只有一個(gè)需要居中的元素的情況(想同時(shí)垂直居中多個(gè)元素時(shí),可以用padding)
vertical-align: middle;(用于垂直對齊inline元素)
只對內(nèi)聯(lián)元素或行內(nèi)塊元素有效
主要用在文本和與文本相鄰元素的垂直方向上的對齊問題(主要是對齊的作用,而不是居中的作用),
例如將一個(gè)icon與文字對齊。
使用vertical-align需要了解文字的baseline和line-box等知識,可參考:[[翻譯]關(guān)于Vertical-Align你需要知道的事情](https://segmentfault.com/a/11...、我對CSS vertical-align的一些理解與認(rèn)識(一)
水平垂直居中 浮動元素使用position:relative;
具體方法與絕對定位的第1個(gè)和第2個(gè)方法類似,只不過把a(bǔ)bsolute改為relative,并根據(jù)原float的方向稍作修改即可。
相對定位relative可以和float疊加,在float后的位置上再相對定位。
缺點(diǎn)就是float元素居中后仍會占據(jù)原來的位置。
第二種方式中,如果設(shè)定了浮動元素的高度,將會影響transform的具體值。
絕對定位元素
使用50%推進(jìn)法則
position: absolute; left: 50%; top: 50%; margin-left: -該元素自身寬度的一半px; /*水平居中*/ margin-top: -該元素自身高度的一半px; /*垂直居中*/
只對絕對定位的元素有效
需要知道絕對定位元素的寬高
兼容性很好,是一種主流用法
第一種方法的改進(jìn)版,使用transform代替margin
position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); /*水平垂直居中*/
不需要知道絕對定位元素的寬高。(如果設(shè)置了高度,則有可能影響到transform的具體值)
兼容性一般,IE10+以及其他現(xiàn)代瀏覽器支持
使用margin:auto;
position: absolute; left: 0; right: 0; /*水平居中*/ top: 0; bottom: 0; /*垂直居中*/ margin: auto;
只對絕對定位的元素有效
不必知道寬高,但需要是圖片這種自身包含尺寸的元素
left與right必須配對出現(xiàn),top與bottom必須配對出現(xiàn)
目前支持IE9+,及其他瀏覽器。
參考:張鑫旭——margin:auto實(shí)現(xiàn)絕對定位元素的居中及原理
flex居中方式display: flex; justify-content: center; /*水平居中*/ align-items: center; /*垂直居中*/
塊級元素設(shè)置display: flex;,內(nèi)聯(lián)元素設(shè)置display: inline-flex;。
需要注意的幾個(gè)問題元素浮動后仍可以設(shè)置margin屬性,但auto不會起作用。
圖片居中的問題
注意:如果圖片的寬度大于父元素的寬度, 不能使用margin: 0 auto;或者text-align: center;讓圖片居中
如果圖片的寬度大于父元素的寬度, 可以絕對定位中的居中方式讓圖片居中。但是定位流的弊端也比較明顯。它必須知道圖片寬度。
如果圖片的寬度大于父元素的寬度, 也可以使用margin: 0 -100%;
(注意: 父元素必須設(shè)置text-align: center;)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/113746.html
摘要:作為一名程序媛在編寫頁面的時(shí)候經(jīng)常還會遇到水平或者垂直居中的一些布局今天正好有空就把各種居中的方式都總結(jié)了一下分享給大家希望能給大家?guī)韼椭阎獙捀弑尘皥D與背景圖上的文字都水平垂直居中有寬度的水平居中有絕對定位的水平居中 作為一名程序媛在編寫頁面的時(shí)候經(jīng)常還會遇到水平或者垂直居中的一些布局今天正好有空就把各種居中的方式都總結(jié)了一下分享給大家希望能給大家?guī)韼椭?1.已知寬高背景圖與背景...
摘要:作為一名程序媛在編寫頁面的時(shí)候經(jīng)常還會遇到水平或者垂直居中的一些布局今天正好有空就把各種居中的方式都總結(jié)了一下分享給大家希望能給大家?guī)韼椭阎獙捀弑尘皥D與背景圖上的文字都水平垂直居中有寬度的水平居中有絕對定位的水平居中 作為一名程序媛在編寫頁面的時(shí)候經(jīng)常還會遇到水平或者垂直居中的一些布局今天正好有空就把各種居中的方式都總結(jié)了一下分享給大家希望能給大家?guī)韼椭?1.已知寬高背景圖與背景...
摘要:中居中的幾種方式水平居中塊級元素在塊級元素中居中設(shè)置在子元素上,前提是不受影響只對行級元素有用行級元素設(shè)置浮動,或者設(shè)置定位之后。 CSS中居中的幾種方式 1.水平居中margin:0 auto;塊級元素在塊級元素中居中設(shè)置在子元素上,前提是不受float影響 2.text-align只對行級元素有用,行級元素設(shè)置浮動,或者設(shè)置定位之后。給它的父元素設(shè)置text-aglin:cente...
閱讀 2740·2021-11-22 15:22
閱讀 1652·2021-11-22 14:56
閱讀 3628·2021-09-22 15:12
閱讀 2415·2021-09-02 15:41
閱讀 2138·2021-08-27 16:26
閱讀 1126·2019-08-30 15:55
閱讀 2150·2019-08-29 17:30
閱讀 679·2019-08-29 16:26