Подтвердить что ты не робот

Встроенный блок отображения IE

Итак, я так делаю

<div style='width: 200px; border: 1px solid black;'>
  <div style='display: inline-block; width: 70px; border: 1px solid green;'>
    asdfasdf<br />asdf
  </div>
  <div style='display: inline-block; width: 70px; border: 1px solid green;'>
    asdfasdf<br />were
  </div>
</div>

Теперь в firefox и chrome он отображается просто отлично, но в Internet Explorer 8 это не так. У них есть макет, так что это не проблема, и ширина достаточно мала, чтобы она соответствовала одной строке.

Если я использую span вместо этого, он действительно работает, однако мне бы очень хотелось, чтобы konw почему div не работает в IE

4b9b3361

Ответ 1

Старые версии IE не понимают inline-block для элементов блочного уровня.

Причина, по которой inline-block работает для встроенных элементов, заключается в том, что они сделали это, чтобы вызвать hasLayout. И макет для встроенных элементов работает точно так же, как inline-block.

Итак, чтобы сделать inline-block работать с элементами уровня блока, сделать их встроенными и как-то вызвать hasLayout, например, используя zoom: 1.

Итак, для вашего кода существует два способа: изменить div на span s или добавить встроенные хаки (или переместить код во внешние таблицы стилей и использовать условные комментарии). Версия с встроенными хаками будет выглядеть так:

<div style='width: 200px; border: 1px solid black;'>
  <div style='display: inline-block; width: 70px; border: 1px solid green;*display:inline;zoom:1;'>
    asdfasdf<br />asdf
  </div>
  <div style='display: inline-block; width: 70px; border: 1px solid green;*display:inline;zoom:1;'>
    asdfasdf<br />were
  </div>
</div>

Ответ 2

display: inline-block; *zoom: 1; *display: inline;

вы можете добавить встроенный блок для другого браузера, но для IE вы можете добавить стиль с *. он работает только в том случае, если

Ответ 3

Изменение типа документа для IE

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Ответ 4

IE < 8 не может включать элементы block по умолчанию в элементы inline-block. Как бы вы ни старались, они всегда остаются block, если вы не используете float IIRC.

В вашем примере кажется, что вам не нужно использовать <div>. Если это так, почему бы не использовать <span> или элемент inline по умолчанию. В противном случае ответ floating.

Ответ 5

Попробуйте это

<style type="text/css">
.one {
  width: 200px; 
  border: 1px solid black;
}
.two {
  display: -moz-inline-box; 
  display: inline-block; 
  width: 70px; 
  border: 1px solid green;
}
* html .two {
  display: inline;
}
* + html .two {
  display: inline;
}
</style>
<div class="one">
  <div class="two">
    asdfasdf<br />asdf
  </div>
  <div class="two">
    asdfasdf<br />were
  </div>
</div>