css實(shí)現(xiàn)元素居中的6種方法

前言
相信大家在面試的時(shí)候也會(huì)經(jīng)常碰到css實(shí)現(xiàn)元素居中的方法,下面我介紹6種方法給大家,歡迎大家評(píng)論區(qū)交流。
需求:
給定兩個(gè)元素,這兩個(gè)元素是父子級(jí)關(guān)系
并且兩個(gè)元素的大小都是不確定的,那么這時(shí)候如何讓子級(jí)在父級(jí)中上下左右都居中?(暫且設(shè)定父級(jí)比子級(jí)要大一些)。
實(shí)現(xiàn)方案:
1.最簡(jiǎn)單的方法
父元素設(shè)置display:flex,子元素 margin: auto,代碼如下:
<style> .parent { width: 300px; height: 200px; background: rebeccapurple; display: flex; } .child { width: 50px; height: 50px; background: red; margin: auto; } </style> <div class="parent"> <div class="child"></div> </div>
2.利用定位
思路
父級(jí)相對(duì)定位,子級(jí)絕對(duì)定位 而四個(gè)定位屬性的值都設(shè)置了0;那么這時(shí)候如果子級(jí)沒(méi)有設(shè)置寬高,則會(huì)被拉開(kāi)到和父級(jí)一樣寬高。而現(xiàn)在設(shè)置了子級(jí)的寬高,所以寬高會(huì)按照我們的設(shè)置來(lái)顯示;但是實(shí)際上子級(jí)的虛擬占位已經(jīng)撐滿了整個(gè)父級(jí),這時(shí)候再給它一個(gè)margin:auto它就可以上下左右都居中了
<style> .parent { width: 300px; height: 200px; background: pink; position: relative; } .child { width: 50px; height: 50px; background: gold; position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; } </style> <div class="parent"> <div class="child"></div> </div>
3.定位配合css3位移
思路
父級(jí)相對(duì)定位,子級(jí)絕對(duì)定位,而top,left這兩個(gè)屬性的如果給百分比;那么這個(gè)百分比則是相對(duì)于父級(jí)的寬高來(lái)進(jìn)行計(jì)算的;如果只給定這兩個(gè)值,則子級(jí)的右上角會(huì)和父級(jí)的中心點(diǎn)對(duì)齊,得到下圖:這時(shí)候則需要進(jìn)一步操作:css3中的位移屬性,則是根據(jù)自身來(lái)計(jì)算百分比的;所以只需要利用這個(gè)屬性把自身再往左上角各移動(dòng)50%就可以讓子級(jí)在父級(jí)中上下左右都居中了
<style> .parent { width: 300px; height: 200px; background: rgb(203, 192, 255); position: relative; } .child { width: 50px; height: 50px; background: rgb(221, 201, 73); position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); } </style> <div class="parent"> <div class="child"></div> </div>
4.彈性盒模型
css3的功勞,沒(méi)啥技巧,掌握了彈性盒模型就能掌握這個(gè)方法,簡(jiǎn)單粗暴。
<style> .parent { width: 300px; height: 200px; background: rgb(203, 192, 255); display: flex; justify-content: center; align-items: center; } .child { width: 50px; height: 50px; background: rgb(62, 57, 24); } </style> <div class="parent"> <div class="child"></div> </div>
5.網(wǎng)格布局Grid
這個(gè)方法和彈性盒模型一樣,簡(jiǎn)單粗暴,沒(méi)啥可說(shuō)的。
<style> .parent { width: 300px; height: 200px; background:green; display: grid; justify-content: center; align-items: center; } .child { width: 50px; height: 50px; background: rebeccapurple; } </style> <div class="parent"> <div class="child"></div> </div>
6.tabel-cell實(shí)現(xiàn)垂直居中
將父容器的display指定為table,這樣瀏覽器便會(huì)把parent當(dāng)作一個(gè)table對(duì)待,然后向table中添加元素,元素具有的效果就會(huì)和直接使用td標(biāo)簽一樣。再只要添加一個(gè)水平居中屬性就好了。
<style> .parent { width: 300px; height: 200px; background: rgb(120, 202, 13); display: table-cell; vertical-align: middle; // 垂直居中 } .child { width: 50px; height: 50px; background: rgb(110, 83, 231); margin: auto; // 水平居中 } </style> <div class="parent"> <div class="child"></div> </div>
以上就是一些我們常用的垂直居中的方案。歡迎在評(píng)論區(qū)交流。
相關(guān)文章
- 這篇文章主要介紹了css實(shí)現(xiàn)元素居中的N種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
- 這篇文章主要介紹了css實(shí)現(xiàn)元素垂直居中顯示的7種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)2020-09-04
CSS實(shí)現(xiàn)子元素div水平垂直居中的示例
這篇文章主要介紹了CSS實(shí)現(xiàn)子元素div水平垂直居中的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起2020-09-03- 這篇文章主要介紹了css 不定寬高的元素居中布局解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起2019-09-18
CSS自適應(yīng)布局實(shí)現(xiàn)子元素項(xiàng)目整體居中,內(nèi)部項(xiàng)目左對(duì)齊
這篇文章主要介紹了CSS自適應(yīng)布局實(shí)現(xiàn)子元素項(xiàng)目整體居中,內(nèi)部項(xiàng)目左對(duì)齊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們2019-09-03- 這篇文章主要介紹了css常用元素水平垂直居中方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)2019-08-09
css實(shí)現(xiàn)元素垂直居中的常用方法(總結(jié))
本文給大家分享幾種方法介紹css實(shí)現(xiàn)元素垂直居中的常用方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-01- 在 CSS 中要設(shè)置元素水平垂直居中是一個(gè)非常常見(jiàn)的需求了。這篇文章主要介紹了CSS實(shí)現(xiàn)元素居中原理解析,本文分別從行內(nèi)元素和塊級(jí)元素進(jìn)行說(shuō)明,具有一定的參考價(jià)值,感興2018-10-18
- 作為前端攻城師,在制作Web頁(yè)面時(shí)都有碰到CSS制作水平垂直居中,我想大家都有研究過(guò)或者寫(xiě)過(guò),特別的其中的垂直居中,更是讓人煩惱,下面這篇文章主要給大家匯總介紹了關(guān)于2017-09-12
css實(shí)現(xiàn)元素水平垂直居中常見(jiàn)的兩種方式實(shí)例詳解
這篇文章主要給大家介紹了css實(shí)現(xiàn)元素水平垂直居中的兩種方式,文中給出了完整的示例代碼供大家參考學(xué)習(xí),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,有需要的朋友們下面來(lái)2017-04-23