一水平
margin-left +border-left +padding-left +width +padding-right +border-right +margin-right = 其父元素内容区的宽度 (必须满足)
如果不满足,则某一个属性会自动填充,然后满足等式。
第一种情况:七个值中没有为 auto 的情况,则浏览器会自动调整margin-right值以使等式满足
第二种情况:有auto的情况。width,margin-left,margin-right可以设置为auto.,如果某个值为auto,则会自动调整为auto的那个值以使等式成立
- - 如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距会自动为0
- - 如果将三个值都设置为auto,则外边距都是0,宽度最大
- - 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值
我们经常利用这个特点来使一个元素在其父元素中水平居中
二垂直
元素的整个垂直大小, 要考虑上下外边距,边框的宽度,上下内边距,以及width
溢出,可以使用以下属性来设置, 注意,是在父元素里设置
overflow:
可选值:
- visible: 默认值,表示可见
- hidden : 将溢出的内容裁剪
- scroll: 添加了上下和左右的滚动条设置
- auto: 根据需求自动添加滚动条
针对于块元素来说,都是独占一行的,因此只涉及到垂直方向上的外边距的重叠(折叠),即两个元素的相邻外边距可以发生重叠现象。
兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)
- 特殊情况:
如果相邻的外边距一正一负,则取两者的和
如果相邻的外边距都是负值,则取两者中绝对值较大的
- 兄弟元素之间的外边距的重叠,对于开发是有利的,所以我们不需要进行处理
- 父子元素间相邻外边距,子元素的会传递给父元素(上外边距)
- 父子外边距的折叠会影响到页面的布局,必须要进行处理 (只需要父元素添加border属性)