Во-первых, display: block-inline;
неправильно - должно быть display: inline-block;
.
Во-вторых, использование display
и float
в одном стиле необязательно. float
автоматически переключает режим отображения на block
. (Но я всегда предпочитаю использовать inline-block
вместо float
везде, где это возможно, так как float
имеет ряд других раздражающих причуд)
Наконец, режим inline-block
содержит ошибку в старых версиях IE (IE6 и IE7), что означает, что он работает только для элементов, которые имеют собственный стиль отображения inline
.
Это означает, что у вас есть серьезные проблемы с использованием inline-block
, если вам нужна поддержка IE6 или IE7. Это работает для некоторых тегов, но не для других.
К счастью, есть быстрый обходной путь. IE7 обрабатывает inline
в основном так же, как inline-block
, поэтому для IE7 вы можете просто указать display:inline;
. но это означает использование отвратительного CSS-хака, чтобы он работал во всех случаях:
.mystyle {
display:inline-block;
/*next two lines IE7-hack*/
zoom:1;
*display:inline;
}
(zoom:1;
также является стилем, специфичным для IE, который представляет собой окольный способ взломать IE, чтобы отобразить его в правильном режиме)
Альтернативой хаку со звездочкой было бы использование функции условных комментариев IE для указания этих стилей для IE7, но это также может быть довольно неприятным.
Кстати, для получения дополнительной информации о поддержке браузером стиля display
см. эту страницу на Quirksmode.org: http://www.quirksmode.org/css/display.html
person
Spudley
schedule
01.12.2010
float: left
иdisplay: inline-block
одновременно нет смысла. Плавающий элемент всегда является блочным. Выбери один. Либо должно работать. Если это не так, вы упускаете что-то важное. Также вы должны указать, находитесь ли вы в стандартном или причудливом режиме. - person RoToRa   schedule 01.12.2010