为了账号安全,请及时绑定邮箱和手机立即绑定

CSS边缘恐怖; 边距在父元素之外添加空格

CSS边缘恐怖; 边距在父元素之外添加空格

慕盖茨4494581 2019-05-27 15:22:15
CSS边缘恐怖; 边距在父元素之外添加空格我的css边距不符合我想要或期望的方式。我好像我的标题margin-top会影响它周围的div-tags。这就是我想要和期望的: ......但这就是我最终的结果: 资源:<!doctype html><html><head><meta charset="utf-8"><title>Margin test</title><style type="text/css">body {     margin:0;}#page {     margin:0;     background:#FF9;}#page_container {     margin:0 20px;}h1 {     margin:50px 0 0 0;}</style></head><body><div id="page">     <div id="page_container">         <header id="branding" role="banner">             <hgroup>                 <h1 id="site-title"><span><a href="#" title="Title" rel="home">Title</a></span></h1>                 <h2 id="site-description">Description</h2>             </hgroup>         </header>     </div></div>我在这个例子中夸大了边缘。h1-tag上的默认浏览器边距略小,在我的情况下,我使用Twitter Bootstrap,使用Normalizer.css将默认边距设置为10px。不重要,重点是; 我不能,不应该,不想改变h1标签上的边距。我想这跟我的其他问题类似; 为什么这种CSS margin-top风格不起作用?。问题是我该如何解决这个具体问题?我已经阅读了类似问题的几个主题,但没有找到任何真正的答案和解决方案。我知道添加padding:1px;或border:1px;解决问题。但这只会增加新的问题,因为我不希望在div标签上有填充或边框。必须有更好的最佳实践解决方案吗?这一定很常见。
查看完整描述

4 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

添加以下任一规则:

float: left/right;position: absolute;display: inline-block;overflow: auto/scroll/hidden;clear: left/right/both;

这是由collapsing margins在此处查看有关此行为的文章。

根据这篇文章:

W3C规范定义了折叠边距如下:

“在本规范中,表达式折叠边距意味着两个或多个框(可能彼此相邻或嵌套)的相邻边距(没有非空内容,填充或边框区域或间隙将它们分开)组合形成一个保证金。“

父子元素也是如此。

所有答案都包括一个可能的解决方案:

在其他情况下,元素的边距不会折叠:

  • 浮动的元素

  • 绝对定位的元素

  • 内联块元素

  • 溢出设置为除可见之外的任何元素(它们不会与子项一起折叠边距。)

  • 已清除的元素(它们不会使用其父块的下边距折叠其顶部边距。)

  • 根元素


查看完整回答
反对 回复 2019-05-27
  • 4 回答
  • 0 关注
  • 502 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号