IE7 не понимает дисплей: встроенный блок
может кто-нибудь, пожалуйста, помогите мне разобраться с этой ошибкой? С Firefox его работает нормально, но с Internet Explorer 7 его нет. Кажется, он не понимает display: inline-block;.
html:
<div class="frame-header">
<h2>...</h2>
</div>
css:
.frame-header {
height:25px;
display:inline-block;
}
4 ответов:
в ИЕ7
display: inline-block;взломать следующим образом:display: inline-block; *display: inline; zoom: 1;по умолчанию IE7 поддерживает только
inline-blockна естественноinlineэлементов (Таблица Совместимости Quirksmode), так что вам нужно только это хак для других элементов.
zoom: 1есть ли триггерhasLayoutповедение, и мы используем star property hack настройкиdisplayдоinlineтолько в IE7 и ниже (новые браузеры не применять).hasLayoutиinlineвместе будет в основном триггерinline-blockповедение в IE7, так что мы счастливы.этот CSS не будет проверять и может сделать вашу таблицу стилей испорченной в любом случае, поэтому используйте только таблицу стилей IE7 через условные комментарии может быть хорошей идеей.
<!–-[if IE 7]> <link rel="stylesheet" href="ie7.css" type="text/css" /> <![endif]–->
обновление
поскольку никто больше не использует IE6 и 7, я представлю другое решение:
вам больше не нужен Хак, потому что IE8 поддерживает его сам по себедля тех, кто должен поддерживать эти браузеры каменного века до IE8 (это не то, что IE8 тоже старый кашель):
За счет контроля, т. е. версии, использовать несколько условных классов в<html>тег Пол Ирландских говорится в статье<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8"><![endif]--> <!--[if IE 8]><html class="no-js lt-ie9"><![endif]--> <!--[if gt IE 8]><!--><html class="no-js"><!--<![endif]-->при этом у вас будут разные классы в html-теге для разных браузеров IE
CSS вам нужно следующим образом
.inline-block { display: inline-block; } .lt-ie8 .inline-block { display: inline; zoom: 1; }это подтвердит, и вам не нужен дополнительный файл CSS
ответ
.frame-header { background:url(images/tab-green.png) repeat-x left top; height:25px; display:-moz-inline-box; /* FF2 */ display:inline-block; /* will also trigger hasLayout for IE6+7*/ } /* Hack for IE6 */ * html .frame-header { display: inline; /* Elements with hasLayout and display:inline behave like inline-block */ } /* Hack for IE7 */ * + html .frame-header { display: inline; /* Elements with hasLayout and display:inline behave like inline-block */ }
IE7 не поддерживает 'inline-block' должным образом, больше информации здесь:ссылке
Use может использовать:' inline ' вместо этого.Что именно вы пытаетесь достичь? Сделайте нам пример и поставьте сюда: http://jsfiddle.net/
используйте встроенный, он работает с такого рода селекторов для элементов списка:
ul li {}или конкретнее:
ul[className or name of ID] li[className or name of ID] {}
Comments