2011-07-06 10 views
13

Estoy intentando diseñar un <header> y no funciona en IE. Estoy usando Modernizr, pero he probado el shiv por sí mismo.IE no diseñar etiquetas HTML5 (con shiv)

código Ejemplo

<section> 
    <header> 
    <h1>Title</h1> 
    </header> 
    <p>Body</p> 
</section> 

de estilo con:

section { 
    border: 2px dotted black; 
    padding: 0.25em; 
} 

header h1 { 
    background-color: #ccc; 
    text-align: center; 
    margin: 0; 
} 

espero un borde alrededor del contenido de la cabecera y la sección, pero en su lugar sólo hay una frontera '[' mirar y la cabecera está debajo eso.

¿Qué está mal?

+1

@feela - ¿estás * seguro * sobre eso? Modernizr * does * incluye la funcionalidad Shiv, y funciona al menos para IE8 e IE7. (Lo estamos usando para un sitio que necesita funcionar en IE7, y está bien). Consulte esta respuesta para obtener más información sobre lo que hace: http://stackoverflow.com/questions/3855294/html5shiv-vs-dean-edwards-ie7-js-vs-modernizr-which-to-choose/3855343#3855343 – Spudley

+0

@feeela Es incorrecto. Usamos esto y funciona desde IE7 en adelante. –

+0

@Spudley @Michael Irigoyen Lo siento, creo que es demasiado tarde. Yo mismo había respondido esto en una [pregunta diferente] (http://webmasters.stackexchange.com/questions/11729/whats-the-difference-between-modernizr-and-html5shiv/11740#11740) ... – feeela

Respuesta

26

Con IE, incluso con el shiv, necesita declarar los elementos HTML 5 como elementos de bloque. Utilizo esta línea para Internet Explorer, pero puede modificarla para los elementos que necesita.

header,nav,article,footer,section,aside,figure,figcaption{display:block} 

Desde el Modernizr Documentation:

Probablemente también desea establecer muchos de estos elementos para display:block;

+0

Esta es probablemente la respuesta . – thirtydot

3

A veces los elementos personalizados (que es cómo convencer a IE para utilizar HTML5 etiquetas) son inline por defecto. Trate de añadir el siguiente fragmento de CSS:

section, 
header { 
    display: block; 
} 
5

Depende de lo que el estilo que usted está tratando de imponer sobre el elemento. Así como James Long lo expresó anteriormente, los elementos personalizados son inline de forma predeterminada. Para IE8 también puede darle al elemento un borde agregando display: inline-block;.