margin 的相关属性
margin 用于设置四个外边距,其后面的参数可以是1-4个
div {/* 上右下左,缺省对称 */margin: 1px; /* 左 = 右 = 下 = 上 = 1px */margin: 1px 2px; /* 下 = 上 = 1px , 左 = 右 = 2px */margin: 1px 2px 4px; /* 上 = 1px , 左 = 右 = 2px , 下 = 4px */margin: 1px 2px 4px 8px; /* 上 = 1px , 右 = 2px , 下 = 4px , 左 = 8px */}
margin 重叠(合并)问题
只会上下合并,不会左右合并
哪些情况会合并
- 父子 margin 合并
- 兄弟 margin 合并
margin 合并的前提是 margin 之间什么都没有必须是邻接的,如果它们之间有一个 border 或 padding 就穿透了
如何阻止合并
- 父子合并用
- padding / border 挡住
- overflow : hidden 挡住,把看不见的隐藏
- display:flex 挡住
- 兄弟合并是否是符合预期的,如果不需要兄弟合并可以用 inline-block 消除
margin 负值的应用
绝对定位元素的居中
.element {width: 600px;height: 400px;position: absolute;/* 水平居中 */left: 50%;margin-left: -300px; /* 宽度的一半 *//* 垂直居中 */top: 50%;margin-top: -200px; /* 高度的一半 */}
去除等距列表右侧 margin
margin 还有很多特性并未整理,参考文章:.list{/* 无关代码 */margin-right: -10px;/* 无关代码 */}.list li{/* 无关代码 */margin-right: 10px;/* 无关代码 */}
外边距重叠 - MDN CSS margin 的相关属性,问题及应用 - 张鑫旭 CSS margin 合并问题 - 前端下午茶 小 tip : margin : auto 实现绝对定位元素的水平垂直居中 - 张鑫旭
