2013-08-23 107 views
0

我想推动父div下5px的子div。当我把margin-top:5px;在内部div上,它会从父级div上方的div下推内部div和父级div,但不会从父级div推下内部div。如何设置它,以便只有内部div从父div下推5px?我不希望父div从它上面的div中推下去。谢谢你的帮助。内部div的CSS边缘顶部推父母div下来

的HTML导航:

<nav> 
    <div class="nav-container"> 
     <div id="cat_14623_divs"> 
      <ul id="nav_14623"> 
       <li><a href="#" onclick="return false;">AKINA &amp; RED LAKE</a</li>  
       <li><a href="#" onclick="return false;">FRESH WILD CAUGHT FISH</a> 
        <ul id="navsub_14623_2326"> 
         <li><a href="#" onclick="return false;">WALLEYE</a></li> 
         <li><a href="#" onclick="return false;">PERCH</a></li> 
         <li><a href="#" onclick="return false;">CRAPPIE</a></li> 
         <li><a href="#" onclick="return false;">NORTHERN</a></li> 
         <li><a href="#" onclick="return false;">WHITEFISH</a></li> 
        </ul></li> 
       <li><a href="#" onclick="return false;">NEWS FROM THE FISHERY</a></li> 
       <li><a href="#" onclick="return false;">CONTACT US</a></li> 
       <li class="last"><a href="#" onclick="return false;">FAQs</a></li> 
     </ul> 
     </div> 
    </div> 
</nav> 

CSS的导航:

nav{ 
position:relative; 
width:960px; 
background-color:#660000; 
height:40px; 
} 

div.nav-container{ 
position:relative; 
width:100%; 
} 

#cat_14623_divs{ 
margin-top:5px; 
height:30px; 
background-color:#520000; 
width:960px;  
} 

#nav_14623{ 
list-style:none; 
display:block; 
padding:0; 
width:80%; 
margin:0 auto; 
} 

#nav_14623 li{ 
position:relative; 
float:left; 
padding: 0.5em 1.5em; 
margin: 0px; 
font-size:12px; 
border-right:solid 2px #fff; 
text-align:center; 
} 

#nav_14623 li.last{ 
border-right:none; 
padding-right:5px; 
} 

#nav_14623 li a{ 
color:#FFF; 
text-decoration:none; 
} 

#nav_14623 ul{ 
position: absolute; 
left:0; 
top: 100%; 
display: none; 
    padding: 0 1000em; /* trick from css-tricks comments */ 
    margin: 0 -1000em; /* trick from css-tricks comments */ 
list-style: none; 
margin-left: 0px; 
margin: 0; 
padding: 5px; 
width:200px; 
z-index: 1000; 
background: #660000; 
    border-left: 1px solid #336699; 
    border-right: 1px solid #336699; 
    border-bottom: 1px solid #336699; 
    border-top: none; 
} 

#nav_14623 ul li{ 
position: relative; 
float: none; 
border-right: none; 
padding:0; 
margin: 0; 
} 

#nav_14623 ul li a{ 
color: #fff; 
font-size: 12px; 
vertical-align: middle; 
line-height:32px; 
width: 100%; 
height:35px; 
display:block; 
} 

#nav_14623 ul li a:hover{ 
background: #520000; 
width: 100%; 
} 

#nav_14623 li:hover > ul{ 
display: block; 
} 

#nav_14623:after { 
content: ""; clear: both; display: block; 
} 

这里是你想看到的网站在案件的网址:上 http://redlakewalleye.designangler.com/

+1

这称为* margin collapse *。 – cimmanon

回答

9

取而代之的是margin-top的孩子,你应该使用padding-top父母。

被更新(如您的评论的反应)

保证金需要一些反弹上。由于母公司没有什么可以反弹,它会反弹在它上面的元素。因此你应该使用填充。

+1

这似乎工作,谢谢。你能不能给我一个解释,为什么孩子div有一个边际利益推动父母下降? – Phorden

+0

我更新了答案,希望你能理解。有点难以解释。 – LinkinTED

+3

此外 - 填充应用于元素的内部,而边距则应用于外部。在某些情况下,这意味着父元素的大小或位置将受到/ /而不是子元素的影响。我发现,一般情况下,最好在相对于父项移动项目时使用“padding”,并且在将项目与兄弟项目相关时移动时使用“margin”(即 - margin-left:5px'以在两个项目之间添加空格浮动元素)。 – Shauna