Margin on child element moves parent element

前端 未结 14 2089
广开言路
广开言路 2020-11-21 23:38

I have a div (parent) that contains another div (child). Parent is the first element in body with no

相关标签:
14条回答
  • 2020-11-22 00:14

    Although all of the answers fix the issue but they come with trade-offs/adjustments/compromises like

    • floats, You have to float elements
    • border-top, This pushes the parent at least 1px downwards which should then be adjusted with introducing -1px margin to the parent element itself. This can create problems when parent already has margin-top in relative units.
    • padding-top, same effect as using border-top
    • overflow: hidden, Can't be used when parent should display overflowing content, like a drop down menu
    • overflow: auto, Introduces scrollbars for parent element that has (intentionally) overflowing content (like shadows or tool tip's triangle)

    The issue can be resolved by using CSS3 pseudo elements as follows

    .parent::before {
      clear: both;
      content: "";
      display: table;
      margin-top: -1px;
      height: 0;
    }
    

    https://jsfiddle.net/hLgbyax5/1/

    0 讨论(0)
  • 2020-11-22 00:16

    This is what worked for me

    .parent {
    padding-top: 1px;
    margin-top: -1px;
    }
    
    .child {
    margin-top:260px;
    }
    

    http://jsfiddle.net/97fzwuxh/

    0 讨论(0)
  • 2020-11-22 00:17

    This is normal behaviour (among browser implementations at least). Margin does not affect the child's position in relation to its parent, unless the parent has padding, in which case most browsers will then add the child's margin to the parent's padding.

    To get the behaviour you want, you need:

    .child {
        margin-top: 0;
    }
    
    .parent {
        padding-top: 10px;
    }
    
    0 讨论(0)
  • 2020-11-22 00:17

    To prevent "Div parent" use margin of "div child":
    In parent use these css:

    • Float
    • Padding
    • Border
    • Overflow
    0 讨论(0)
  • 2020-11-22 00:19

    Using top instead of margin-top is another possible solution, if appropriate.

    0 讨论(0)
  • 2020-11-22 00:20

    add style display:inline-block to child element

    0 讨论(0)
提交回复
热议问题