Problema con display: inline-block; en IE7
Escrito por giancarloMar 11
Lo sé. Internet Explorer, sobre todo el 7 para abajo, nos ha traido muchos problemas y hoy tuve uno en particular. Cuando querÃa centrar un menú que tenÃa “divs” flotantes (da igual si fuese “li”). Lo que hacÃa y funcionaba era poner un contenedor alineado al centro (con la propiedad display: inline-block;) y dentro los divs (los que muestran los items del menú) y todo perfecto, excepto en Internet Exploret 7.
Solución:
div.menu{ width: 100%; text-align: center; height: 39px; margin-top: 3px; } div.menu div.items{ text-align: center; display:inline-block; margin: 0 auto; height: 39px; zoom: 1; *display:inline; } div.items div.item{ width: 150px; height: 39px; background-color: #333; float: left; margin: 0 5px; }
<div class="menu">
<div class="items">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>He usado el zoom, para poder hacer que el contenedor se muestre con las verdaderas dimensiones. El “*” es comentario en CSS para todos los navegadores, excepto internet explorer, asà que con esto digo que utilice, en vez de display: inline-block, display: inline;
Con esto, solucionado.

Para no usar hacks (que no son buenos), se pueden utilizar condicionales para IE.
La propiedad ‘display: inline-block’ sólo funciona en IE <=7 si el elemento padre tiene 'display: inline;'. IE8 ya corrige este problema.
Agregando al final del head (antes del cierre):
div.menu {display:inline}
Espero le pueda servir a alguien a pesar de que IE6- ya está muerto!.
Saludos.
A ver si ahora salen los comentarios condicionales que fueron filtrados, si no buscar IE condicional en google.
<!–[if lte IE 7]>
<style type=”text/css”>
div.menu {display:inline}
</style>
<![endif]–>
Perfecta la solución!!!