У меня есть встроенный блок элемент, содержащий плавающий элемент, и текст, который должен течь вокруг него:Как получить встроенные блоки, чтобы освободить место для поплавков?
<div style="background: yellow; display: inline-block">
<div style="float: left; width: 128px; height: 128px; background: cyan">Float</div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br><br>
Vivamus blandit porta rhoncus.<br><br>
Integer egestas, lectus ac finibus sagittis, nisl diam scelerisque risus, id malesuada odio tortor in elit.<br><br>
Sed pellentesque ligula enim, at porta nibh viverra quis.<br><br>
Integer egestas, lectus ac finibus sagittis, nisl diam scelerisque risus, id malesuada odio tortor in elit.
</div>
В Internet Explorer, это делает, как и ожидалось: Firefox и Chrome делают то же HTML разному:
Обратите внимание, как в рендеринге Firefox, ширина инлайн-блок такова, что оно точно соответствует тексту без поплавка. Это приводит к тому, что строки не подходят после того, как float добавлен для бесполезного разрыва.
Похоже, что Firefox и Chrome выполняют эту конструкцию сначала (1), вычисляя предпочтительную ширину встроенного блока, как если бы поплавок не был там, (2) добавление поплавка и (3) выкладка плавающий текст вокруг поплавка, используя ширину, вычисленную в (1), как ширину встроенного блока.
Поведение I хочу вот поведение, выполняемое Internet Explorer. Есть ли способ добиться такого же эффекта в других браузерах, таких как Firefox и Chrome?
Никогда, НИКОГДА не используйте IE как ссылку на то, как все должно работать. Первый вопрос, вы используете doctype и какой? – Rob
@Rob: я не использую IE как ссылку на то, как вещи * должны работать, я использую его как пример того, как я * хочу, чтобы все работало. Я уверен, что спецификация CSS оставляет эту деталь неопределенной, что позволяет использовать оба поведения. Это IE11 с использованием html5 doctype. – redlizard
№ CSS не делает этого. Мой комментарий был только для того, чтобы быть уверенным, что вы знаете, что никакой версии IE нельзя доверять, чтобы делать что-либо правильно. – Rob