2012-02-02 10 views
49

decir que tengo el siguiente códigoIE8 pantalla inline-block que no trabaja

<style type="text/css" media="all"> 
    span, ul, ul li { 
    display: inline-block; 
    vertical-align: top; 
    margin: 0; 
    padding: 0; 
    list-style: none; 
    } 
</style> 
<span>i would want</span> 
<ul> 
    <li>this</li> 
    <li>on</li> 
    <li>one line.</li> 
</ul> 

quiero esto para visualizar en línea en IE8. En todas partes que he leído todo dice que esto debería funcionar, IE8 es compatible con Inline-Block. Sin embargo, después de una mañana de intentos, no puedo hacer que lo anterior se alinee. Sé que podría flotar, pero con los otros elementos en mi página (que no se muestran aquí) necesitaría usar un 'clearfix' que es más marcado. Solo necesito apuntar a IE8 y me encantaría saber por qué el bloque en línea no funciona para mí cuando aparentemente es compatible. El código anterior hace lo que quiero cuando se ve en Google Chrome.

+0

Mejor respuesta aquí: http://stackoverflow.com/questions/6703017/ie-display-inline-block – Marcus

Respuesta

50

Supongo que no ha declarado un doctype. Trate de colocar esto en la primera línea, antes de la etiqueta html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

el código que funciona en IE8 pegados con ese tipo de documento.

+3

Te amo, esto me ahorré un montón de IE-dolor! – Iazel

+0

Woah! Maldita sea, me olvido de esto cada vez. – Chris

+0

@Iazel. Te refieres al hit de IE –

37

No todas las versiones de IE8 parecen funcionar por igual. Descubrí que el código dado, incluso con un DOCTYPE, no funciona en IE 8.0.6001.18702, que es una versión anterior.

Sin embargo, la solución para las versiones inferiores IE hizo su trabajo en particular, que el IE 8, así:

<!--[if lt IE 8]> 
<style type="text/css"> 
    li { display: inline; } 
</style> 
<![endif]--> 
+0

Esto funcionó perfectamente, solo agregué! Importante para anular, parece que en línea es en realidad bloque en línea en IE. ¡Gracias! – formatc

+0

Al azar tropecé con esto, funcionó para mí, en línea es de hecho en línea de bloque.Gracias – Samuel

+0

Genial, esto funcionó para mí, tengo el mismo problema, Windows 7 IE 8 y el bloque en línea no funciona – JorgeeFG

17

Es posible ajustar margin-right: 1px

trabajó para mí bastante bien.

+1

Esta es la mejor opción de todas las respuestas. ¡Un gran consejo! –

+0

¿Qué ...? ¡No puedo creer que esto funcione! – Connell

+0

El enlace está roto. – Yisela

3

para IE8 - se puede añadir una declaración específica:

display: inline-table;

la que funciona muy bien.

9

IE8 lo tratará como un elemento de nivel de bloque a menos que use flotante.

.divInlineBlock 
{ 
    display: inline-block; 
    float: left; 
} 
5

Tenga en cuenta que IE8 actuará como IE7 si está viendo un sitio de intranet, lo que puede suceder mientras se desarrolla. Ver esta cuestión StackOverflow:

IE8 Rendering as IE7 By Default?

13

En mi experiencia siempre es una idea mejor utilizar el modo universal (IE6 +) de declarar un bloque de línea. Incluso si se dirige a navegadores más nuevos cada vez que he intentado decir que solo es compatible con navegadores más nuevos, algunos clientes aún se equivocan con su tipo de documento, y luego las ventas dicen que es necesario corregirlo, porque los clientes todavía pueden verlo y no lo entiende, que depende de su configuración de IE y no es nuestra culpa. Además, cuando utiliza bloques en línea para elementos estructurales, evita que el sitio se desintegre por completo si el usuario está viendo el sitio en un IE antiguo por cualquier razón.

display: inline-block; 
*zoom: 1; 
*display: inline; 
+0

Esto es idiomático! Al igual que 'if (var i <0; iy x.length; i ++)' – HerrSerker

+0

@HerrSerker No sé qué quiere decir con eso, pero así es como obtiene inline-block en una forma IE6 + (le guste o no) . – Idra

+0

Sí, exactamente a qué me refiero. Debes aprenderlo a medida que aprendes la construcción del bucle JS. – HerrSerker