既然margin-left: -10px
元素的边与其父元素的边相交,为什么margin-right: -10px
不发生同样的情况呢?
example
div {
background: red;
width: 200px;
height: 100px;
}
p {
background: blue;
width: 100%;
}
.left {
margin-left: -10px;
}
.right {
margin-right: -10px;
}
<div>
<p class="left">Hello</p>
</div>
<div>
<p class="right">Hello</p>
</div>
4条答案
按热度按时间cu6pst1q1#
好消息是负利润率确实有效!
若要查看负边距,请考虑以下代码片段:
我将
outline
添加到所有div
和p
中,以显示内容框的扩展。第一段没有页边距,我将一段向左偏移,另一段向右偏移。
如果您有足够的内容来填充段落的宽度(或者如果您显示轮廓),您将看到文本框在
content
框之外流动。您还可以从段落outline
中看到文本确实向左和向右扩展。但是,要查看右侧的效果,需要有足够的内容来填充段落的整个宽度,或者需要在子元素上设置背景色或轮廓。
如果您开始固定宽度和高度,在
content
上,您将看到其他效果,如段落在content
外流动。研究这个简单的代码结构说明了CSS框模型的许多方面,花一些时间研究它是有启发性的。
Fiddle参考:http://jsfiddle.net/audetwebdesign/2SKjM/
如果从
wrapper
中删除填充,您可能不会注意到右边距偏移,因为元素将扩展以填充父容器的整个宽度或页面宽度,具体取决于HTML/CSS的特定细节。在您的示例中,您没有看到效果,因为您通过指定
width: 100%
固定了p
元素的宽度,这将指示段落采用父容器的宽度(在您的示例中为200px)。如果将宽度从
100%
简单更改为auto
:你会看到你的第二段就在你所期望的右边。
outline
引起的,outline
将文本框包含在content
中,即使文本框延伸到父(content
)元素之外。因此,outline
框可能比相应元素的border
框大得多。jaql4c8m2#
这是因为默认情况下元素是从左到右而不是从右到左布局的,当你把
float
放在右边时,你会看到相反的效果。jsFiddle
8fq7wneg3#
简单地说,只是改变这个css:
致:
以下是演示:http://jsfiddle.net/pVKNz/
如果你想制作类似移位的元素,使用这个css:
vs3odd8k4#
如果有人想给flex box一个负的margin-right,
请考虑理由-内容:间距。