用flex實(shí)現(xiàn)垂直居中
摘要:但要實(shí)現(xiàn)垂直居中確是一大難題。彈性盒子絕對定位視口單位彈性盒子彈性盒子應(yīng)該是解決垂直居中的最佳方案,隨著的逐漸沒落,惹人煩的兼容性問題正逐漸被克服。里有一個(gè)和一個(gè),想將這兩個(gè)元素在里垂直居中,同樣只需給它們的父元素設(shè)和。
CSS里實(shí)現(xiàn)水平居中非常容易,inline元素用text-align:center;,block元素用margin:auto;就行了。但要實(shí)現(xiàn)垂直居中確是一大難題。本篇收集了一些已知的方案,整理出來,以備將來取用。代碼可以從GitHub上下載。
Flex彈性盒子
absolute絕對定位
vh視口單位
Flex彈性盒子
Flex彈性盒子應(yīng)該是解決垂直居中的最佳方案,隨著IE10的逐漸沒落,惹人煩的兼容性問題正逐漸被克服。用法很簡單,給需要垂直居中的元素的父容器設(shè)置display:flex,并指定align-items: center;就搞定了:
body {
… display: flex; align-items: center;
}
main {
… display: flex; align-items: center; justify-content: center; flex-direction: column;
}
用flex實(shí)現(xiàn)垂直居中
absolute絕對定位
一種很常見的方法是用絕對定位配合負(fù)值margin。思路是設(shè)成absolute后,指定top和left為50%,將元素的左上角定位點(diǎn)放到頁面正中心。然后用負(fù)值margin一半的元素寬高度將元素拉回頁面正中心:
main {
position: absolute; width: 18em; height: 10em; top: 50%; left: 50%; margin-top: -9em; margin-left: -5em; …
}
但缺點(diǎn)是你需要事先指定元素的width和height,否則無法給負(fù)margin設(shè)值,顯得不夠靈活。其實(shí)不必固定元素的寬高,改用translate()位移來替代負(fù)margin,實(shí)現(xiàn)將元素拉回頁面正中心:(如果對變形元素不熟,可以參照CSS3 transform介紹)
main {
position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); …
}
用absolute實(shí)現(xiàn)垂直居中
用絕對定位absolute讓需要垂直居中的元素脫離文檔流,指定top和left各50%將元素左上角定位點(diǎn)設(shè)到頁面正中心。然后用translate()各負(fù)50%,將元素拉回頁面正中心。思路和負(fù)margin是一致的,優(yōu)勢是不必固定元素的寬高了。缺點(diǎn)是absolute絕對定位威力太大,要考慮是否會對頁面布局造成影響。
vh視口單位
上例中translate()將元素回拉的前提是,absolute絕對定位來設(shè)top和left各50%。但如果看到absolute絕對定位就覺得不舒服,可以改成vh視口單位來設(shè)元素左上角的定位點(diǎn)。
vh就是視口高度,vw是視口寬度。例如1vh表示視口高度的1%。
vmin是視口寬高的小值,例如vh vmax是視口寬高的大值,例如vh 所以我們可以用vh替代absolute絕對定位: main { } 垂直居中width: 9em;
margin: 50vh auto 0;
transform: translateY(-50%);
…
因?yàn)槿サ袅薬bsolute,失去了包裹性,所以需要指定width大小。margin-top設(shè)為50vh,表示視口高度的50%位置。然后用translateY(-50%)將元素拉上去。之所以用translateY因?yàn)樗轿恢靡呀?jīng)指定margin為auto實(shí)現(xiàn)了居中,所以水平位置不用回拉
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/111464.html
摘要:高度模型淺識為的簡寫,簡稱為塊級格式化上下文,為瀏覽器渲染某一區(qū)域的機(jī)制,中只有和中還增加了和。并非所有的布局都會在開發(fā)中使用,但是其中也會涉及一些知識點(diǎn)。然而在不同的純制作各種圖形純制作各種圖形多圖預(yù)警 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個(gè)問題:怎樣通過 CSS 簡單而優(yōu)雅的實(shí)現(xiàn)水平、垂直同時(shí)居中。記得剛開始學(xué)習(xí) CSS 的時(shí)候,看到 float 屬性不...
摘要:經(jīng)過半年的打磨,正式發(fā)布,主要是新增了一些常用組件,并使用命名,為接下來的微信小程序開發(fā)做好準(zhǔn)備。這兩種方式實(shí)現(xiàn)的瀑布流式布局均支持首屏和網(wǎng)頁窗口大小改變時(shí)的列數(shù)自適應(yīng)。主要是對于標(biāo)準(zhǔn)里的布局方式草案中的布局方式進(jìn)行一些總結(jié)。 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個(gè)問題:怎樣通過 CSS 簡單而優(yōu)雅的實(shí)現(xiàn)水平、垂直同時(shí)居中。記得剛開始學(xué)習(xí) CSS 的時(shí)候,看...
摘要:絕對底部前端掘金來自國外的設(shè)計(jì)達(dá)人,純,可以實(shí)現(xiàn)當(dāng)正文內(nèi)容很少時(shí),底部位于窗口最下面。有效解決圖片使用單位邊角缺失的問題前端掘金起因在移動端使用布局時(shí)圖片也需要用單位。 CSS 絕對底部 - 前端 - 掘金來自國外的設(shè)計(jì)達(dá)人,純CSS,可以實(shí)現(xiàn): 當(dāng)正文內(nèi)容很少時(shí),底部位于窗口最下面。當(dāng)改變窗口高度時(shí),不會出現(xiàn)重疊問題。甚至,創(chuàng)造該CSS的人還專門成立一個(gè)網(wǎng)站介紹這個(gè)CSS底部布局方案...
閱讀 1639·2023-04-25 20:36
閱讀 2048·2021-09-02 15:11
閱讀 1176·2021-08-27 13:13
閱讀 2653·2019-08-30 15:52
閱讀 4586·2019-08-29 17:13
閱讀 1001·2019-08-29 11:09
閱讀 1490·2019-08-26 11:51
閱讀 833·2019-08-26 10:56