Помните, что оба #content
и #left
(а также #right
) всплывают.
Из-за природы поплавков они (или их содержимое) могут перекрываться. Это хорошо описано в this section of the spec и довольно легко понять. Если вы примените отрицательные поля к плавающему элементу, который находится рядом с другим поплавком, он просто переместится влево (аналогично относительному смещению left
), над его родным братом.
В разделе, посвященном float
property, вы найдете список «точных правил, регулирующих поведение поплавков». Теперь я не на 100% знаком с моделью с плавающей запятой, но эти пункты являются тем, что я считаю уместным:
2. Если текущее поле остается плавающим, а также имеются левые плавающие поля сгенерированный элементами ранее в исходном документе, то для каждого такого более раннего поля либо левый outer edge текущего поля должен быть справа справа outer edge более раннего окна, или его верхний должен быть ниже, чем нижний коробка.Аналогичные правила справедливы для правильных плавающих ящиков.
7. Левая плавающая коробка с другим левым плавающим полем слева от нее может не иметь своего правого внешнего края справа от правого края его блока. (Неправильно: левый поплавок может не торчать на правом краю, если он не находится как можно дальше слева). Аналогичное правило выполняется для правых элементов.
8. Плавающий ящик должен быть размещен как можно выше.
9. Левая плавающая коробка должна быть поставлена как можно дальше, насколько возможно, вправо-плавающее поле как можно правее. Более высокое положение предпочтительнее, чем выше, чем слева или справа.
Так что я думаю: а запас -200px, который, как вы говорите, отрицательный эквивалент ширины самого #left
элемента, заставляет его плавать весь путь до и к правой (а не влево) и обнять край элемента #center
, который сам также плавает. Правый край обоих элементов касается друг друга из-за этого полного, равного отрицательного поля. Следовательно, по мере того как вы продолжаете увеличивать (или уменьшать?) Отрицательную маржу, вы увидите, что элемент #left
продолжает двигаться влево.
Обратите внимание, что прокладка, применяемая к элементу #container
, не взаимодействует с полями; даже если вы удалите прокладку с обеих сторон или с обеих сторон, поля будут взаимодействовать одинаково.
Отметим также, что есть заявление, в разделе, посвященном collapsing margins в связанном разделе спецификации, которая описывает поведение отрицательных полей, но это не имеет значения, как границы мы имеем дело с здесь являются горизонтальными и относятся к элементам с плавающей точкой и поэтому никогда не подвергаются разрушению.
Что такое код css, который вы используете? – CKKiller