水平居中
情形一
目标元素为块状元素,默认情况下其宽度父元素的100%,不存在水平居中一说。
情形二
目标元素为块状元素,且宽度固定,可以通过设置margin:auto
实现其相对于父元素的水平居中。
情形三
目标元素可以设置为内联元素或内联块状元素,然后设置父元素text-align:center
即可实现目标元素居中。
情形四
目标元素为块状元素,宽度不固定,且我们希望元素的宽度正好包裹其内容,并实现其水平居中:
- 设置目标元素的
position:absolute
,实现元素的宽度正好包裹其内容; - 确保父元素具有position属性,设置目标元素
left:50%
,实现目标元素向右偏移父元素的一般; - 设置
transform: translate(-50%,0)
,实现元素向右偏移自身的一半
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style type="text/css">
div {
background-color: red;
}
ul{
position: absolute;
left: 50%;
transform: translate(-50%,0);
}
</style>
<body>
<div id="div">
<ul>
<li>sdfsdfs</li>
<li>sdfsdfdfgdfs</li>
</ul>
</div>
</body>
</html>
垂直居中
情形一
对于内联元素或内联块状元素,可以通过将元素的line-height属性设置为父元素的高度,实现垂直居中。
情形二
同上情形四,将元素先向下偏移父元素的一半,再向上偏移自身的一半。