Почему отрицательное правое поле не работает?
Так как край элемента с margin-left: -10px
пересекает край его родителя, почему это не происходит с margin-right: -10px
?
пример
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>
Ответы
Ответ 1
Хорошей новостью является то, что отрицательные поля работают!
Чтобы увидеть отрицательные поля на работе, рассмотрите следующий фрагмент кода:
.wrapper {
outline: 1px solid blue;
padding: 40px;
}
.content {
outline: 1px solid red;
background-color: #D8D8D8;
}
.content p {
outline: 1px dotted blue;
background-color: rgba(255, 255, 0, 0.3);
margin: 0 0 0 0;
text-align: justify;
}
.content p.lefty {
margin-left: -20px;
}
.content p.righty {
margin-right: -20px;
}
<div class="wrapper">
<div class="content">
<p>Lorem ipsum dolor sit amet, ...</p>
<p class="lefty">Sed ipsum ante, dictum vel rhoncus id, ...</p>
<p class="righty">Curabitur aliquam tristique mattis...</p>
</div>
</div>
Ответ 2
Это потому, что элементы выложены слева направо по умолчанию не справа налево. Вы можете увидеть противоположный эффект, если вы float
<p>
вправо.
jsFiddle
.right {
margin-right: -10px;
float:right;
}
Ответ 3
Просто измените этот css:
p {
background: blue;
width: 100%;
}
в
p {
background: blue;
display: block;
}
Здесь демо: http://jsfiddle.net/pVKNz/
Если вы хотите сделать похожими на перемещаемые элементы, используйте этот css:
.left {
margin-left: -10px;
margin-right:10px;
}
.right {
margin-right: -10px;
margin-left:10px;
}