为什么这个 CSS margin-top 样式不起作用?
P粉512729862
P粉512729862 2023-08-23 23:07:58
[CSS3讨论组]

我尝试在另一个 div 内的 div 上添加 margin 值。除了最高值之外,所有工作都正常,它似乎被忽略了。但为什么呢?

我的预期:


我得到了什么:


代码:


#outer {
  width: 500px;
  height: 200px;
  background: #FFCCCC;
  margin: 50px auto 0 auto;
  display: block;
}

#inner {
  background: #FFCC33;
  margin: 50px 50px 50px 50px;
  padding: 10px;
  display: block;
}
<div id="outer">
  <div id="inner">
    Hello world!
  </div>
</div>


W3Schools 没有解释为什么 margin 会出现这种情况。

P粉512729862
P粉512729862

全部回复(2)
P粉141035089

尝试在内部div上使用display: inline-block;。就像这样:

#outer {
    width:500px; 
    height:200px; 
    background:#FFCCCC;
    margin:50px auto 0 auto;
    display:block;
}
#inner {
    background:#FFCC33;
    margin:50px 50px 50px 50px;
    padding:10px;
    display:inline-block;
}
P粉170438285

您实际上看到的是 #inner 元素的上边距 折叠#outer元素的上边缘,仅保留#outer边距完好无损(尽管图像中未显示) 。两个盒子的顶部边缘彼此齐平,因为它们的边距相等。

以下是 W3C 规范中的相关要点:

您可以执行以下任一操作来防止边距折叠:

上述选项防止边距折叠的原因是:

左右边距的表现符合您的预期,因为:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号