I have a div
(parent) that contains another div
(child). Parent is the first element in body
with no
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 menuoverflow: 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/
This is what worked for me
.parent {
padding-top: 1px;
margin-top: -1px;
}
.child {
margin-top:260px;
}
http://jsfiddle.net/97fzwuxh/
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;
}
To prevent "Div parent" use margin of "div child":
In parent use these css:
Using top
instead of margin-top
is another possible solution, if appropriate.
add style display:inline-block
to child element