在这种情况下,负边距是唯一可行的方法(也是我认为可以使用的少数情况之一)。
您可以探索其他解决方案(例如,将红色 bg 设置为居中对齐的 bg 图像,然后将div
's 设置为 ' 之外的内容填充h1
),但实际上使用负边距并没有任何好处,实际上是长期它的可维护性较差。
正如已经建议的那样,您也可以使用定位来解决这个问题(参见下面的示例)。
HTML:
<div class="container">
<p>Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet</p>
<h1>testing, testing, 1 2 3</h1>
</div>
CSS:
.container {
background: #f00;
margin: 0 0 0 20px;
padding: 100px 0;
position: relative;
width: 400px;
}
h1 {
background: #00f;
color: #fff;
left: -20px;
padding: 0 20px;
position: absolute;
width: 100%;
}
http://jsfiddle.net/d7KJ9/4/
不幸的是,虽然在之后添加内容h1
似乎破坏了这种方法:
http://jsfiddle.net/d7KJ9/2/
此外,如果上述方法确实有效,它不一定比使用负边距更好(它实际上涉及更多 CSS)。
总之,只需使用负边距解决方案,如果使用得当,负边距不一定是坏事,只需在使用它们之前与自己推理(有没有更好的方法来完成你想要的?)