Ответ 1
Когда вы плаваете элементы, вы должны предоставить ширину перемещаемых элементов. В противном случае вы можете столкнуться с неожиданным поведением в разных браузерах.
Проверьте этот учебник, есть хорошая информация о плавании в css. [link is dead]
В принципе, если вы предоставите overflow:hidden;
для контейнера div и укажите ширину для перемещаемых элементов, ваша проблема будет решена.
<div style="overflow: hidden;">
<div style="float:left; width: 300px;">Some text</div>
<div style="float:right; width: 300px;">Some text</div>
</div>
Аналогично, вы можете добавить еще один div, где бы вы ни хотели нормализовать поток, следующим образом:
<div>
<div style="float:left; width: 300px;">Some text</div>
<div style="float:right; width: 300px;">Some text</div>
<div style="clear:both;"></div>
<div>This div will be at the same place
as if the previous elements are not floated</div>
</div>
Оба будут работать:)
ИЗМЕНИТЬ
Другим методом, который я часто использую в наши дни, является плавающий первый элемент и набор margin-left
для следующего элемента. Например:
<div>
<div style="float: left; width: 300px;">Some text</div>
<div style="margin-left: 300px;">Some text</div>
<div style="clear: both;"></div>
</div>
Преимущество этого метода заключается в том, что следующий элемент (второй div в этом случае) не нуждается в фиксированной ширине. Кроме того, вы можете пропустить третий div (clear: both;
). Это необязательно. Я просто добавляю его в случае, если floated div больше по высоте, чем второй div, так как если вы его не добавите, родительский div всегда будет получать высоту второго div.