zaxlctjs
2015-07-26 03:01
采纳率: 81%
浏览 1.7k
已采纳

div+css布局的一个很小问题,求解,谢谢了

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
*{margin:0; padding:0;}
.A{width:950px; height:40px; background:#ccc;}
.nav{width:800px; height:20px; background:blue; margin-top:5px;}
</style>
</head>

<body>
<div class="A">
   <div class="nav"></div>
</div>
</body>
</html>


在我的想象中, 打开浏览器应该是这样的
图片说明

然而,实际上,打开浏览器却是这样的
图片说明

为什么会这样,
margin-top为什么不基于他外面的大盒子,而是基于外面显示?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • vuturn 2015-07-26 03:48
    已采纳

    父div没有padding或者border,垂直外边距会发生合并。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 丵鹰 2015-07-26 03:09

    <!doctype html>



    无标题文档 *{margin:0; padding:0;position:absolute; z-index:1;} .A{width:950px; height:40px; background:#ccc;} .nav{width:800px; height:20px; background:blue; margin-top:10px;}


    评论
    解决 无用
    打赏 举报
  • danielinbiti 2015-07-26 03:17
     .A{width:950px; height:40px; background:#ccc;}
     这个样式改改,在chrome或者ff下需要增加overflow:hidden或者overflow:auto; 
    .A{width:950px; height:40px; background:#ccc;overflow:hidden}
    
    或者用父容器的padding-bottom来控制。
    
    评论
    解决 无用
    打赏 举报
  • vuturn 2015-07-26 03:49

    你在父div加上padding或者border就不会了,自己百度下垂直外边距合并,就明白了

    评论
    解决 无用
    打赏 举报
  • 八爪 章鱼 2015-07-26 04:03

    <!doctype html>



    无标题文档 *{margin:0; padding:0;} .A{width:950px; height:40px; background:#ccc; float:left} .nav{width:800px; height:20px; background:blue; margin-top:5px;float:left}


    你的样式属性里面少了 这个 float:left

    评论
    解决 无用
    打赏 举报
  • 八爪 章鱼 2015-07-26 04:04

    <!doctype html>



    无标题文档 *{margin:0; padding:0;} .A{width:950px; height:40px; background:#ccc;} .nav{width:800px; height:20px; background:blue; margin-top:5px;}


    你的样式属性里面少了这个 float:left

    评论
    解决 无用
    打赏 举报
  • 评论
    解决 无用
    打赏 举报
  • 另一花生 2015-07-26 09:09
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题