通常首選方法是使用flexbox居中內(nèi)容。只需三行代碼即可:display:flex,然后使用 align-items:center 和 justify-content:center 將子元素垂直和水平居中。
如下代碼:
html:
<div class="flexbox-centering">
<div>Centered content.</div>
</div>
css:
.flexbox-centering {
display: flex;
justify-content: center;
align-items: center;
height: 100px;
}
使用grid(網(wǎng)格)與flexbox非常相似,也是一種常見(jiàn)的技術(shù),尤其是布局中已經(jīng)使用網(wǎng)格的情況下。與前一種flexbox技術(shù)的唯一區(qū)別是它顯示為柵格。
如下代碼:
html:
<div class="grid-centering">
<div class="child">Centered content.</div>
</div>
css:
中,是我們編碼過(guò)程中最常見(jiàn)的,那么,我們平時(shí)常見(jiàn)的居中方式,下面一一羅列出來(lái),有錯(cuò)誤的地方,望碼友多多包涵并加以矯正。
水平居中
1、多塊級(jí)元素,設(shè)置display:inline-block;使之在一行排列,在父級(jí)樣式里,設(shè)置text-align:center;就可以實(shí)現(xiàn)水平居中的效果
body {
text-align: center;
}
div{
width: 100px;
height: 100px;
border: 1px solid;
display: inline-block;
}
2、內(nèi)聯(lián)元素,利用text-align:center;可以實(shí)現(xiàn)塊級(jí)元素內(nèi)部的內(nèi)聯(lián)元素的水平居中
div {
border: 1px solid red;
width: 100px;
height: 100px;
text-align: center;
}
<div>
<span>塊級(jí)元素中的行內(nèi)元素的水平居中</span>
</div>
3、塊級(jí)元素,通過(guò)把固定寬高的塊級(jí)元素的margin-left和margin-right設(shè)置為auto,方可實(shí)現(xiàn)
div{
width: 100px;
height: 100px;
border: 1px solid;
margin: 0 auto;
}
<div></div>
4、利用彈性盒子(display: flex;)
給父級(jí)定寬定高,然后設(shè)置display: flex;以及justify-content: center;方可達(dá)到水平居中效果
body {
width: 500px;
height: 500px;
display: flex;
justify-content: center;
border: 1px solid red;
}
div {
width: 100px;
height: 100px;
border: 1px solid;
}
<body>
<div></div>
</body>
垂直居中
1、內(nèi)聯(lián)元素(單行)
通過(guò)設(shè)置元素的height和line-height,方可達(dá)到居中效果
2、多行元素,利用表布局(table)
通過(guò)給想要居中的元素的父級(jí)設(shè)置display: talbe-cell;以及vertical-align:enter;方可居中
3、彈性盒子(flex)
給父級(jí)設(shè)置display: flex;變成彈性盒子。
分兩種,
(1),主軸方向?yàn)樗剑苯釉O(shè)置 align-items: center;
(2),主軸方向?yàn)榇怪保O(shè)置flex-direction: column;改變主軸方向,然后設(shè)置justify-content: center;
彈性盒模型主軸不同,居中的方式也不同,靈活應(yīng)用。
4、固定寬高的塊級(jí)元素
利用父相子絕的定位原理,實(shí)現(xiàn)垂直居中
position: absolute;
left: 50%;
top: 50%;
margin-left: (自身高度的一半);
5,未知寬高的塊級(jí)元素
利用transform: translateY(-50%);方可實(shí)現(xiàn)
position: absolute;
top: 50%;
transform: translateY(-50%);
水平垂直方向的居中
1、固定寬高
通過(guò)margin平移整體寬高的一半,實(shí)現(xiàn)水平垂直居中
{
position: absolute;
width: 100px;
height: 100px;
border: 1px solid;
left: 50%;
top: 50%;
margin-top: -50px;
margin-left: -50px;
}
2、未知寬高
利用transform中的translate()屬性實(shí)現(xiàn)
{
position: absolute;
border: 1px solid;
left: 50%;
top: 50%;
transform: translateY(-50%);
transform: translateX(-50%);
}
3、彈性盒子(flex)
通過(guò)display:flex,把父級(jí)變成彈性盒模型,利用align-items: center;justify-content: center;方可實(shí)現(xiàn)居中。
注意:彈性盒子容器中,多行項(xiàng)目的居中方式另加計(jì)算。
body {
border: 1px solid;
width: 300px;
height: 300px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
div {
border: 1px solid;
width: 100px;
height: 100px;
}
隨著學(xué)習(xí)的不斷深入,居中方式可以有很多種,我們要善于利用,更加明確什么情況下用怎樣的居中方式。
內(nèi)容首發(fā)于工粽號(hào):程序員大澈,每日分享一段優(yōu)質(zhì)代碼片段,歡迎關(guān)注和投稿!
大家好,我是大澈!
本文約 500+ 字,整篇閱讀約需 1 分鐘。
今天分享一段優(yōu)質(zhì) CSS 代碼片段,可以輕松實(shí)現(xiàn)元素垂直水平居中對(duì)齊。
老規(guī)矩,先閱讀代碼片段并思考,再看代碼解析再思考,最后評(píng)論區(qū)留下你的見(jiàn)解!
div {
display: grid;
place-content: center;
}
分享原因
這段代碼展示了如何使用 CSS Grid 布局以及 place-content 屬性來(lái)居中對(duì)齊元素。
CSS Grid 是一種強(qiáng)大的布局工具,提供了簡(jiǎn)單且靈活的方式來(lái)實(shí)現(xiàn)復(fù)雜的布局,而place-content 屬性進(jìn)一步簡(jiǎn)化了居中對(duì)齊的實(shí)現(xiàn)。
相較于 Flex 布局,Grid 布局僅僅只需一行代碼即可搞定居中對(duì)齊!
代碼解析
1. display: grid;
設(shè)置元素為網(wǎng)格容器。
網(wǎng)格容器可以通過(guò)定義網(wǎng)格行和列來(lái)布置其子元素。
2. place-content: center;
place-content 是 align-content 和 justify-content 的組合屬性。
center 值表示內(nèi)容在容器的中央對(duì)齊。
3. 兼容性
place-content: center; 的兼容性在現(xiàn)代瀏覽器中較好,某一些舊版瀏覽器的不兼容完全可以忽略了。
以下是一些常見(jiàn)瀏覽器的具體支持情況:
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。