2010-01-06 11 views
11

Oye, en mi búsqueda para crear una imagen lo más liviana posible, estoy buscando crear dos horas de tono.Diseñando una hora para Internet Explorer

que he logrado esto en los navegadores modernos, pero quiero lograr el mismo efecto en IE6 y 7

El código actual que estoy usando es

hr { 
    border-bottom:1px solid #FFFFFF; 
    border-top:1px solid #dcdcdc; 
    clear:both; 
    height:0; 
    border-left:0px; 
    border-right:0px; 
} 

He intentado, sin éxito para hacer que esto funcione en ie6 y 7 sin tener que dirigirse específicamente a los navegadores. ¿Alguna idea?

(Heres mi proyecto actual en la que estoy empleando este código, y mirando para que sea cruz navegador - http://www.qwibbledesigns.co.uk/preview/aurelius/)

Saludos

Matt

+1

Off topic - parece que la mayor parte del sitio es marcador de posición, pero puede que desee tener en cuenta que "profesional" está mal escrito. – Sapph

Respuesta

13

Prueba algo como lo siguiente en su lugar (y reemplazar el <hr> con un <div>)

div { 
    /* no need for border-left/right with the following: */ 
    border: none; 
    border-bottom:1px solid #FFFFFF; 
    border-top:1px solid #dcdcdc; 
    clear:both; 
    height:0; 
    width: 100%; 
} 

(y no se olvide de añadir un ID o clase para evitar que todos los div parezcan extraños)

NOTA: esto funciona en IE7, IE8 y en navegadores compatibles. Probablemente necesite más ajustes para el IE6 de 10 años, o incluso necesite un hack de imágenes (como suele suceder).

+0

Eso funcionó en ie7, pero en ie6, cuando coloco el margen inferior: 20px; que quiero en todos los


, agrega el relleno, pero también pone espacio entre los dos bordes. Intenté configurar line-height: 0 que no funcionó. Establecí font-size: 0; y logró hacer que la brecha entre las fronteras sea mucho más pequeña, pero aún no haya cigarros. Puede ver los resultados aquí; www.qwibbledesigns.co.uk/preview/aurelius/index.html ¿Alguna idea? – Qwibble

+3

hacer que las cosas funcionen en IE6 requiere un juego de pelota diferente (y mucha frustración y tiempo, razón por la cual muchas empresas dejan IE6 solo). Considere arreglarlo programáticamente (es decir, con una carga on-line). Además, asegúrese de que haya algún contenido, como ' ' en el 'div'. Si nada funciona, usa el truco que usaron hace 10 años cuando nació IE6: crea una imagen, estírala. Ese es un método que siempre funciona. – Abel

+2

Hermosa, ' ' hizo el truco, muchas gracias a usted, hombre. Empecé a codificar mucho después de IE6, así que no estoy tan bien leyendo sobre este tipo de trucos =) – Qwibble

2

Creo que la manera más fácil es usar <div class="hr"></div> en su lugar. Styling <hr/> cross-browser es innovador, en mi experiencia.

21

No he visto ninguna buena respuesta para esto pero mi propio trabajo descubrió que el siguiente código debería funcionar para diseñar un recurso de recursos humanos para que sea consistente en Firefox, Safari, Chrome e IE (no estoy seguro si funciona debajo de IE7).

hr { 
    color:#bfbfbf; /*used for IE, top color*/ 
    background:#bfbfbf; /*firefox and chrome, top color*/ 
    min-height: 0px; /*required to get IE to render the top pixel color*/ 
    border-left: 0px; 
    border-right: 0px; 
    border-top: 1px solid #bfbfbf; /*Your top color*/ 
    border-bottom: 1px solid #ffffff; /*Your bottom color*/ 
} 
+1

Esto debería tener más votos. En realidad, se trata de cómo diseñar el


, esquivando la idiotez de IE. Para mí, la declaración de color para lidiar con los bordes laterales extraños cuando hay altura era el secreto. – dmnc

4

Si eres clientes ya han pegado el sitio con < hr> tag sólo puede hr estilo, así como la clase horas y luego intercambiar < hr> etiquetas en cuenta en IE6 y IE7.

Utilice el css Publicado por Abel:

hr, .hr { 
    /* no need for border-left/right with the following: */ 
    border: none; 
    border-bottom:1px solid #FFFFFF; 
    border-top:1px solid #dcdcdc; 
    clear:both; 
    height:0; 
    width: 100%; 
} 

A continuación, en el archivo js sólo hay que poner:

if ($.browser.msie && $.browser.version.substr(0, 1) <= 7) { 
    $("hr").replaceWith('<div class="hr"></div>'); 
} 

obviamente jQuery se requiere para esta revisión, pero funcionó bien para mí.

+0

Hay tantos problemas con esto, especialmente si tiene algún tipo de generación de JavaScript DOM en su aplicación web. La solución de CSS pura de Matt es el camino a seguir. – user2867288

0

El ajuste de la altura a 2px me solucionó el problema.

hr { 
    margin: 1em 0 1em 0; 
    border: none; 
    border-top: 1px solid #000; 
    height: 2px; 
    display: block; 
} 
1
hr 
{ 
    /* hr css reset */ 
    color: white; /* if parent element's background is white - old ie versions fix */ 
    border: 0; 
    background: transparent; 
    height: 0; 
    margin: 0; 
    /* hr css reset end */ 
    /* custom styles */ 
    margin: 20px 0; 
    border-top: 1px solid red; 
} 
Cuestiones relacionadas