Вбудований блок не працює в Internet Explorer 7, 6


77

У мене є цей CSS-код із inline-block. Хто-небудь може сказати мені, як змусити це працювати в Internet Explorer 6 і 7. Будь-які ідеї? Може, я роблю щось не так? Дякую!

#signup {
   color:#FFF;
   border-bottom:solid 1px #444;
   text-transform:uppercase;
   text-align:center;
}
#signup #left {
   display: inline-block
}
#signup #right {
   background-image:url(images/signup.jpg);
   border-left: solid 1px #000;
   border-right: solid 1px #000;
   display: inline-block; 
   padding:1% 2%
   width:16%;
}
#signup #right a { font-size:100%; font-weight:bold } 
#signup #right p { font-size:90%; font-weight:bold }
#signup a:hover  { color:#FFF; text-decoration:underline }

Відповіді:


181

У IE6 / IE7 display: inline-blockпрацює лише з елементами, які є природним чином вбудованими (наприклад, spans).

Щоб це працювало над іншими елементами, такими як divs, вам потрібно це:

#yourElement {
    display: inline-block;
    *display: inline;
    zoom: 1;
}

*display: inlineвикористовує "безпечний" CSS-хак для застосування лише до IE7 і нижче .

Для IE6 / 7 zoom: 1передбачає hasLayout . Наявність "макета" є обов'язковою умовою, display: inline-blockщоб завжди працювати.

Можна застосувати цей обхідний шлях, зберігаючи при цьому дійсний CSS, але насправді не варто замислюватися над цим, особливо якщо ви вже використовуєте будь-які префіксовані властивості постачальника.

Прочитайте це, щоб отримати додаткову інформацію про display: inline-block(але забудьте -moz-inline-stack, що це було потрібно лише для старовинного Firefox 2).


Я прочитав (але не можу перевірити), що ви повинні також встановити _height: ###pxце, що зрозуміло лише IE6 і нижче. Якщо припустити, що ви все ще піклуєтесь про браузер, який офіційно помер, тобто.
Blazemonger

1
Хороша стаття щодо цього питання, яка також охоплює Firefox 2 та IE5.5 & 6: blog.mozilla.org/webdev/2009/02/20/cross-browser-inline-block
sshow

1
Застереженням щодо використання цих хакерів як таких є те, що ми не знаємо, як майбутні браузери будуть аналізувати попередню зірочку. Я б вирішив використовувати умовні оператори IE для окремої таблиці стилів, що сприяло б цим хакам.
Джек

1
@JackWilliams: Усі розумні "майбутні браузери" матимуть модульні тести, щоб запобігти цьому коли-небудь проблемою. Ось, наприклад, випадковий WebKit. Вам не потрібно турбуватися, жоден новий браузер ніколи не буде приймати властивості з попереднім сміттям.
тридцять пунктів

2

*display:inlineчудово працює, як зламати IE7 . Але ви можете додати zoom:1до коду як *background:#fff; *display:inline; zoom:1. Тут ви можете помістити свій колір кольору фону. Іноді ви не побачите макет на екрані, скажімо, наприклад, елементи списку не відображатимуться на екрані. Тоді в таких випадках це чудово працює і виглядає так само, як і в інших браузерах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.