CSS - 元素置中
CSS 元素如何置中,這是一個很常見的問題,不只實務上常用到,面試時有時也會被問到。這裡總結了幾種方法,包括:
- flex 置中。
- grid 置中。
- margin + flex 置中。
- position + transform 置中。
tip
其實 1、3、4 實務上滿常用到的,比較需要注意的是 2,用 grid 置中算是滿新鮮 的方法。
前置作業
<div class="parent flex">
<div></div>
</div>
<div class="parent grid">
<div></div>
</div>
<div class="parent margin">
<div></div>
</div>
<div class="parent position">
<div></div>
</div>
.parent {
border: black solid 3px;
width: 20vw;
aspect-ratio: 1;
div {
border: red solid 2px;
width: 5vw;
aspect-ratio: 1;
background-color: red;
border-radius: 50%;
}
}
flex 置中
很基本的用法,這裡用 align-items: center;
和 justify-content: center;
來置中。
.flex {
display: flex;
align-items: center;
justify-content: center;
}
grid 置中
這裡用 place-items: center;
來置中。
.grid {
display: grid;
place-items: center;
}
margin + flex 置中
因為 margin: auto;
會將元素水平置中,所以這裡用 display: flex;
來垂直置中。
.margin {
display: flex;
div {
margin: auto;
}
}
position + transform 置中
這裡用 position: relative;
和 position: absolute;
來置中。
.position {
position: relative;
div {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}