Est-ce que quelqu'un peut m'aider à comprendre ce bogue? Avec Firefox, cela fonctionne bien, mais avec Internet Explorer 7, ce n’est pas le cas. Il semble ne pas comprendre le display: inline-block;
.
html:
<div class="frame-header">
<h2>...</h2>
</div>
css:
.frame-header {
height:25px;
display:inline-block;
}
Le IE7 display: inline-block;
hack est comme suit:
display: inline-block;
*display: inline;
zoom: 1;
Par défaut, IE7 ne supporte que inline-block
sur naturellement inline
éléments ( Tableau de compatibilité Quirksmode ), vous n'avez donc besoin de ce hack que pour les autres éléments.
zoom: 1
est là pour déclencher le comportement hasLayout
, et nous utilisons le hack de la propriété star pour définir le display
sur inline
seulement dans IE7 et inférieur (les navigateurs récents n'appliqueront pas cela). hasLayout
et inline
ensemble déclencheront essentiellement inline-block
_ comportement dans IE7, donc nous sommes heureux.
Ce CSS ne sera pas validé et peut de toute façon gâcher votre feuille de style. L'utilisation d'une feuille de style exclusivement pour IE7 via commentaires conditionnels pourrait être une bonne idée.
<!–-[if IE 7]>
<link rel="stylesheet" href="ie7.css" type="text/css" />
<![endif]–->
Comme personne n’utilise plus IE6 et 7, je vais présenter une solution différente:
Vous n'avez plus besoin d'un hack, car IE8 le supporte tout seul
Pour ceux qui doivent prendre en charge ces navigateurs avant l'âge IE8 (ce n'est pas que IE8 soit aussi vieux tousse):
Pour le compte de IE contrôle de version, utilisez une classe conditionnelle dans <html>
tag like Paul Irish déclare dans son article
<!--[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]-->
En cela, vous aurez différentes classes dans html-tag pour différents IE navigateurs
Le CSS dont vous avez besoin est comme suit
.inline-block {
display: inline-block;
}
.lt-ie8 .inline-block {
display: inline;
zoom: 1;
}
Cela va valider et vous n'avez pas besoin d'un fichier CSS supplémentaire
.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 ne supporte pas correctement 'inline-block', plus d'infos ici: LINK
Use peut utiliser: 'inline' à la place.
Qu'est-ce que vous essayez exactement de réaliser? Faites-nous un exemple et mettez ici: http://jsfiddle.net/
inline, cela fonctionne avec ce type de sélecteurs pour les éléments de liste:
ul li {}
ou pour être précis:
ul[className or name of ID] li[className or name of ID] {}