元素在其父元素中水平方向的位置由一下几个属性共同决定
margin-left ? ? ? ?border-left ? ? ? ?padding-left ? ? ? ?width ? ? ? ?padding-right ? ? ? ?border-right ? ? ? ?margin-right
一个元素在其父元素中,水平布局必须要满足以下的等式
margin-left + border-left + padding-left + width + padding-right + border-right + margin-right
=父元素内容区的宽度(必须满足)
举例:子元素 inner七个元素的值如下
0 +0 + 0+ 200 + 0 + 0 + 0 =600 ??不成立
以上等式必须满足,如果相加结果等式不成立,则称为过度约束,则浏览器会让等式自动调整
——调整的情况
? ? ? ? 1:如果七个值中没有auto情况,则浏览器会调整margin-right值以使等式满足
? ? ? ? ? ? ? ? 0 +0 + 0+ 200 + 0 + 0 + 400 =600
? ? ? ? 2:这7个值中width,margin-left,margin-right,这三个值可以设置auto
? ? ? ? ? ? ? ? 如果有设置auto,则浏览器会自动调整auto的值,以使等式成立
? ? ? ? ? ? ? ? 0 +0 + 0+ auto + 0 + 0 + 0 =600 ? ? ? ? ? ?auto=600
? ? ? ? ? ? ? ? 0 +0 + 0+ auto + 0 + 0 + 200 =600 ? ? ? ? auto=400
? ? ? ? 3:如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大
? ? ? ? 4:如果三个值都是auto,也只会调整宽度
? ? ? ? 5:如果将两个外边距设为auto,宽度固定,则两侧外边距会设置为相同的值,会使元素自动在父元素中居中,所以我们经常将左右外边距设置为auto
<!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: 600px;
height: 200px;
border: 10px red solid;
}
.inner {
width: 200px;
margin-right: auto;
margin-left: auto;
/* margin: 0 auto; */
height: 200px;
background-color: sandybrown;
}
</style>
</head>
<body>
<div class="outer">
<div class="inner"></div>
</div>
</body>
</html>