怎么做?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.outer{
width: 800px;
height: 300px;
background-color: bisque;
}
.inner{
width: 300px;
height: 100%;
background-color: aquamarine;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="outer">
<div class="inner"></div>
</div>
</body>
</html>
关键语句:
.inner{
width:xxxpx;
margin:0 auto;
}
为什么?
一个元素在其父元素中,水平布局必须满足下面的等式:
margin-left + border-left + padding-left + width + padding-right + border-right + margin-right=其父元素的内容区的宽度
以上等式必须满足,否则称之为过度约束,则等式会自动调整:
- 如果上面的七个值没有一个设置为auto,则浏览器会自动调整margin-right的值以使满足等式
- 如果width或margin-left或margin-right中有一个设置为auto,则会调整auto为某值
- 如果width和某一个外边距设置为auto,则width会调整到最大,设置auto的一个外边距被调整为0px
- 如果width和两个外边距都为auto,则width会调整到最大,两个外边距都是0px
- 如果width为指定值,两个外边距都是auto,则左右外边距会被调整为相同的值,我们可以利用这一点来使得子元素在父元素中水平居中
- 其他情况都是会调整margin-right