摘要:前幾天去一家互聯(lián)網(wǎng)公司面試,面試官問到了這個應(yīng)該算是比較簡單的問題,在我自認(rèn)為回答正確時,才知道這道題的答案有很多種,下面就讓我們一起來探討一下這個問題思路絕對定位居中原始版這個是我回答出來的,也是被各位所熟知的一種方法,設(shè)外層相對定位,內(nèi)
前幾天去一家互聯(lián)網(wǎng)公司面試,面試官問到了這個應(yīng)該算是比較簡單的問題,在我自認(rèn)為回答正確時,才知道這道題的答案有很多種,下面就讓我們一起來探討一下這個問題:
思路1:絕對定位居中(原始版)這個是我回答出來的,也是被各位所熟知的一種方法,設(shè)外層div相對定位,內(nèi)層div絕對定位,top、left分別設(shè)為50%,然后通過設(shè)置margin-top、margin-left值為寬度的負(fù)數(shù)就可以成功實現(xiàn)垂直水平居中了:
Document
很常見的,這個經(jīng)典的方法最大的不足之處是inner的寬度必須是固定值,否則margin-top和margin-left的值將無法設(shè)置,為了解決這個問題,我們考慮將使inner發(fā)生位移的代碼由margin-top、margin-left換成其他形式,換成什么呢?請看第二種方法:
思路2:絕對定位居中(改進(jìn)版之一)我們的目的是讓inner在top和left方向發(fā)生50%偏移之后,再往回偏移一定距離,而css里關(guān)于位置偏移的屬性還有什么呢?當(dāng)我們查閱最新版的css3屬性之后,發(fā)現(xiàn)這樣一個屬性:selector{transform:translate();},translate代表著水平、垂直方向上的轉(zhuǎn)換(位移),其中當(dāng)括號內(nèi)的值設(shè)為百分比時,將以元素自身寬度為基準(zhǔn),移位相應(yīng)的寬度,這樣一來,我們的問題就得到了解決:
這個方法妥善解決了內(nèi)層div寬度不確定的問題,但由于使用了css3的新屬性,在低版本ie瀏覽器下是不兼容的。由此,我們想到了第三種方法:
思路3:絕對定位居中(改進(jìn)版之二)這個方法,不僅能在inner寬度不確定時發(fā)揮作用,還能兼容各種主流瀏覽器,看上去似乎很完美,但事實上,當(dāng)我們的需求改為:寬度隨內(nèi)部文字自適應(yīng) ,即寬度未設(shè)置時,這種方法就無法滿足需求了,原因是left、right設(shè)為0后,inner在寬度未設(shè)置時將占滿父元素的寬度。
(你可以在思路二的基礎(chǔ)上將inner寬度去掉,內(nèi)部放一些文字,你會發(fā)現(xiàn)在第二種思路下這種需求是可以滿足的)
思路4:flex布局居中flex布局是移動端一種很新潮的布局方法,利用flex布局使元素垂直水平居中,缺點依然是令人頭疼的兼容性問題(在ie11-中不起作用),優(yōu)點是代碼量比前幾種方法相比略少,方便使用。
讓我們一起來了解一下:
Document 這是一段文字這是一段文字這是一段文字
以上就是使div垂直+水平居中的四種方式,關(guān)于第三種思路中inner無法對內(nèi)容自適應(yīng)的問題,目前我還沒有想出解決辦法,希望高人們能夠指點一二。
參考文章:小tip: margin:auto實現(xiàn)絕對定位元素的水平垂直居中--來自張鑫旭-鑫空間-鑫生活
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/111405.html
摘要:尤其是在實際頁面中,有很多特殊的場景,導(dǎo)致水平居中實現(xiàn)起來比較麻煩。這篇文章旨在紀(jì)錄一些我知道的居中方式。以一道經(jīng)典面試題為例一個的在一個水平垂直居中,用實現(xiàn)。首先定義元素層和垂直居中無關(guān)的樣式直接定義在里。 相比較水平居中,垂直居中比較復(fù)雜點。尤其是在實際頁面中,有很多特殊的場景,導(dǎo)致水平居中實現(xiàn)起來比較麻煩。這篇文章旨在紀(jì)錄一些我知道的居中方式。以一道經(jīng)典面試題為例:一個200*2...
摘要:中居中的幾種方式水平居中塊級元素在塊級元素中居中設(shè)置在子元素上,前提是不受影響只對行級元素有用行級元素設(shè)置浮動,或者設(shè)置定位之后。 CSS中居中的幾種方式 1.水平居中margin:0 auto;塊級元素在塊級元素中居中設(shè)置在子元素上,前提是不受float影響 2.text-align只對行級元素有用,行級元素設(shè)置浮動,或者設(shè)置定位之后。給它的父元素設(shè)置text-aglin:cente...
摘要:一水平居中二水平垂直居中三針對文本內(nèi)容的垂直居中一水平居中要居中的元素有屬性給元素添加代碼演示此外,和產(chǎn)生同樣效果的原因移步要居中的元素沒有屬性給添加屬性,并在的外面包一層且添加是讓塊狀里面的元素比如文字居中。 一 水平居中二 水平垂直居中三 針對文本內(nèi)容的垂直居中 一 水平居中 要居中的元素A有width屬性 給元素A添加 margin:0,auto;(代碼演示) showImg(h...
摘要:一水平居中二水平垂直居中三針對文本內(nèi)容的垂直居中一水平居中要居中的元素有屬性給元素添加代碼演示此外,和產(chǎn)生同樣效果的原因移步要居中的元素沒有屬性給添加屬性,并在的外面包一層且添加是讓塊狀里面的元素比如文字居中。 一 水平居中二 水平垂直居中三 針對文本內(nèi)容的垂直居中 一 水平居中 要居中的元素A有width屬性 給元素A添加 margin:0,auto;(代碼演示) showImg(h...
閱讀 1792·2021-11-24 09:39
閱讀 1591·2021-11-16 11:54
閱讀 3530·2021-11-11 16:55
閱讀 1732·2021-10-14 09:43
閱讀 1469·2019-08-30 15:55
閱讀 1262·2019-08-30 15:54
閱讀 3451·2019-08-30 15:53
閱讀 1368·2019-08-30 14:18