IE7 nie rozumie display: inline-block
Czy ktoś może mi pomóc ogarnąć ten błąd? Z Firefox jego działa dobrze, ale z Internet Explorer 7 jego nie. Wydaje się, że nie rozumie display: inline-block;
.
Html:
<div class="frame-header">
<h2>...</h2>
</div>
Css:
.frame-header {
height:25px;
display:inline-block;
}
4 answers
IE7 display: inline-block;
hack jest następujący:
display: inline-block;
*display: inline;
zoom: 1;
Domyślnie IE7 obsługuje tylko inline-block
na naturalnie inline
elementach ( Tabela kompatybilności z Quirksmode ), więc potrzebujesz tego hacka tylko dla innych elementów.
zoom: 1
czy istnieje wyzwalanie hasLayout
zachowanie, i używamy właściwości star hack do Ustawienia display
na inline
tylko w IE7 i niższych (nowsze przeglądarki tego nie zastosują). hasLayout
i inline
razem w zasadzie wywołają inline-block
zachowanie w IE7, więc jesteśmy szczęśliwi.
Ten CSS nie będzie sprawdzał poprawności i może sprawić, że Twój arkusz stylów i tak się zepsuje, więc używanie arkusza stylów tylko dla IE7 poprzez komentarze warunkowe może być dobrym pomysłem.
<!–-[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" />
<![endif]–->
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-22 08:49:07
Update
Ponieważ nikt już nie używa IE6 i 7 przedstawię inne rozwiązanie:
nie potrzebujesz już hakera, ponieważ IE8 obsługuje go sam
Dla tych, którzy muszą obsługiwać przeglądarki z epoki kamiennej przed IE8 (nie chodzi o to, że IE8 też jest taki stary ):
Dla kontroli wersji IE, użyj jakiejś warunkowej klasy w znaczniku <html>
, np. Paul Irish stwierdza w jego artykule
<!--[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]-->
By to będzie mieć różne klasy w znaczniku html dla różnych przeglądarek IE
CSS, którego potrzebujesz, jest następujący
.inline-block {
display: inline-block;
}
.lt-ie8 .inline-block {
display: inline;
zoom: 1;
}
To potwierdzi i nie potrzebujesz dodatkowego pliku CSS
Stara odpowiedź
.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 */
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-25 10:26:25
IE7 nie obsługuje poprawnie 'inline-block', więcej informacji tutaj: LINK
Use może zamiast tego użyć: 'inline'.
Co dokładnie próbujesz osiągnąć? Zrób nam przykład i umieść tutaj: http://jsfiddle.net/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-01 07:29:18
Użyj inline, działa z tego rodzaju selektorami dla elementów listy:
ul li {}
Lub konkretnie:
ul[className or name of ID] li[className or name of ID] {}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-14 05:32:53