CSS中控制元素水平布局的七个属性

元素的水平方向的布局

元素在其父元素中水平方向的位置由一下几个属性共同决定

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>