Мне любопытно о нечетном режиме рендеринга в Safari 5.1. В двухколоночном макете первый столбец имеет фиксированную ширину, а второй - оставшуюся часть.Почему в Safari5 есть непредвиденная разница?
HTML:
<div class="row">
<div class="left">
<p>Left</p>
</div>
<div class="right">
<p>Right. Some more text here, to show how odd the line breaks...</p>
</div>
</div>
CSS:
.row { width: 300px; background: yellow; overflow: hidden; }
.left { width: 100px; background: red; float: left; }
.right { margin-left: 100px; background: green; overflow: hidden; }
Это прекрасно работает на большинстве браузеров (на всех "современных" браузерах, как я думал), но теперь я узнал, , что Safari 5 добавляет непреднамеренное правое поле во втором столбце той же ширины, что и предполагаемое левое поле (как если бы было правило .right { margin-right: 100px; }
).
Большинство браузеры:
Safari5: (проверено на 5.1.7, но это происходит также и на 5.1.9)
Когда я удаляю overflow: hidden;
, он отлично работает, но мне нужно это для других внутренних элементов.
Мои вопросы не то, как изменить этот маленький пример, но:
- Является ли это Сафари-5-Bug, или мои правила CSS как-то не так, даже если они «работают» на большинстве браузеры?
- Если это ошибка, есть ли у нее имя, с помощью которого я могу использовать некоторые обходные пути?
- Могу ли я каким-то образом обнаружить, какие браузеры затронуты этим поведением, чтобы определить для них некоторые правила исключения.
Update: стандартный Android-браузер (Galaxy S3, AppleWebKit 534,30), кажется, использует тот же самый старый WebKit двигатель. появляется же странно правый край: http://jsfiddle.net/MvF3V/1/embedded/result/
Вам нужно переполнение: скрыто, чтобы очистить поплавок. правильно ? – Era
@Era: Точно. Мне нравится очищать float с 'overflow: hidden;'. Я мог бы использовать решение clearfix, но все же мне любопытно, почему возникает этот странный рендеринг. –
это может быть ошибка сафари. да, вы можете сделать эту альтернативу http://jsfiddle.net/MvF3V/2/ – Era