原码笔记

原码笔记

详解css边距重叠的几种解决方案

小诸哥 0

今天整理了一下用css防止边距重叠的几种方法

先假设一组dom结构

  1. <div class="parent">
  2.      <div class="child">
  3.      </div>
  4. </div>

通常情况下,如果给子元素设置margin,就会产生这个属性对父元素也产生了同样的效果,然而

这其实不是我们想要的结果,我们只想对子元素设置margin,那么现在我们应该怎么做呢?

(1) 给父元素设置边框

  1. .parent {
  2.      width: 300px;
  3.      height: 300px;
  4.      border: 1px solid #ccc;
  5. }
  6. .child {
  7.      width: 200px;
  8.      height: 200px;
  9.      margin: 20px;
  10. }

(2)给父元素添加padding

  1. .parent {
  2.      padding 1px;
  3.      width: 300px;
  4.      height: 300px;
  5. }
  6. .child {
  7.      width: 200px;
  8.      height: 200px;
  9.      margin: 20px;
  10. }

(3)在子元素上方加一个有宽高的兄弟元素,记住是有宽高的。

  1. <div class="parent">
  2.          <div style="width: 20px;height: 20px;margin-top: "></div>
  3.          <div class="child">
  4.          </div>
  5. </div>

(4)给父元素设置 overflow: hidden; 属性

  1. .parent {
  2.      overflow: hidden;
  3.      width: 300px;
  4.      height: 300px;
  5. }
  6. .child {
  7.      width: 200px;
  8.      height: 200px;
  9.      margin: 20px;
  10. }

(5)给子元素设置 display: inline-block;(如果子元素是行内元素或者行内块级元素则不会产生边距重叠的问题)

  1. .parent {
  2.      width: 300px;
  3.      height: 300px;
  4. }
  5. .child {
  6.      width: 200px;
  7.      height: 200px;
  8.      margin: 20px;
  9.      display: inline-block;
  10. }

(6)使子元素脱离文档流这个实现的方法有很多,浮动,绝对定位等,这里我就不做具体的解释了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

标签: 边距重叠