Comunidad de diseño web y desarrollo en internet online

CSS ANTI IEXPLORER

Citar            
MensajeEscrito el 10 Dic 2005 06:57 pm
CSS Anti IE

Es algo que me encontré en Google, la idea es simple, IE, como todo sabemos, es un Explorador que tiene muchos errores al interpretar el código CSS, es así que cuando queremos hacer algo bien hecho, IE nos da muchas dificultades.

En mi caso, yo estaba haciendo una caja con bordes redondeados, algo simple... pero IE dio en manifiesto su peculiar forma de interpretar el CSS, desarmando mi cajita.

Mi caja consta de dos imágenes laterales con bordes redondos, y una línea como relleno del espacio entre extremo y extremo, esta línea es repetida una y otra vez, y da la sensación de una imagen de 300px de ancho, pero en realidad es una imagen de 2px de ancho.

El problema radico en la interpretación del width.


div#linea {

width:300px;
height:50px;
background-image:url(../images/pie_linea.jpg);
background-repeat:repeat-x;
}


El contenedor de los extremos de la línea de relleno es de 300px, y como el relleno pasa por debajo de los bordes, le di el mismo ancho del contenedor para que se vea mejor la aplicación de este "truco".

esto se veía bien en FF y en Opera...




Pero no en IE..



Cambio de ancho (width) de 300 a 272px


/*CSS para IE*/
div#linea {
width:272px;
height:50px;
background-image:url(../images/pie_linea.jpg);
background-repeat:repeat-x;
}


Creo que esta Claro... el código es leído por IE y funciona...



Pero este cambio de Width de 300 a 272px, no funciona en FF y en Op.






Así que sólo queda hacer un CSS para IE y otro para el resto del mundo... se puede usar infinidad de trucos, y maromas en el css, para hacerlo compatible con todos los navegadores (IE y el resto de navegadores)... pero este, es el que entendi y me parece facil y simple, sobre todo para quienes nos iniciamos en esto del CSS y XHTML


/*Css para IE*/
div#linea {
width:272px;
height:50px;
background-image:url(../images/pie_linea.jpg);
background-repeat:repeat-x;
}
/*CSS anti IE*/
html>body div#linea {
width:300px;

height:50px;
background-image:url(../images/pie_linea.jpg);
background-repeat:repeat-x;
}


El truco esta en la misma mala programación de IE, y es que IE no lee este tipo de formato de CSS2 (según entiendo).

Cuando escribimos esto:

#linea
Nos referimos a una etiqueta que tiene como id = "linea"

div#linea
Nos referimos a un div que tiene como id = "linea"

html>body div#linea
Nos referimos especificamente a un div cuyo id es "linea", que se encuentra dentro de la etiqueta body, que a su vez esta dentro de la etiqueta html.

Este tipo de estructura es la que no entiende IE... pero es entendida por el resto de navegadores (FF y op, no probé con otros).

Al parecer este tipo de estructura (para FF y Op ) tiene mayor importancia, ya que ignora la primera y usa la segunda, y claro, el pobre de IE usa la primera porque la segunda no la entiende.

Y todos felices.





Esto no tiene como objetivo enseñar a construir cajas con bordes redondeados.

^^ para este tipo de problema puede haber muchas soluciones... pero la use para dar a conocer este pequeño y facil truco.

Espero les Sirva ^^ Saludos

Por J O S

712 de clabLevel

1 tutorial

Genero:Masculino  

Lima, Perú

firefox
Citar            
MensajeEscrito el 10 Ene 2006 05:59 pm
Yo preferiria usar Condicionales IE, pero no está mal, ya que no es un hack malo, es un hack a base de estandares y CSS 2.1 (y)

Por NEO_JP

BOFH

5724 de clabLevel

13 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Premio_Secretos Team Cristalab

Front-end Developer en Washington, DC

firefox
Citar            
MensajeEscrito el 25 Ene 2006 03:12 am
lei algo de esto en disenorama pero no me quedo muy claro...
ahora con tu clara explicacion el asunto es muy diferente.
muchas gracias

Por cexar

4 de clabLevel



 

peru

firefox
Citar            
MensajeEscrito el 25 Ene 2006 06:55 am
De hecho gracias J O S, este aporte me ayudo para solventar un problema con unos Div's que no encajaban de manera correcta y con este hack lo solucione de manera satisfactoria.



(y)

Por Reymond

Claber

1111 de clabLevel

5 tutoriales
1 articulo

Genero:Masculino  

Mobile developer

firefox
Citar            
MensajeEscrito el 25 Ene 2006 07:53 am
^^ me alegra que les haya servido, pero luego de aprender y entender este hack, he visto en disenorama otros tutos sobre lo que comenta Neo_jp, y pues, a mi parecer es mejor usar condicionales si los cambios que se desean hacer son pocos... ya que usando "html>body" excluimos a IE también de los datos que no dan problema, como el color, tipo de fuente, etc.

En cambio, las condicionales, permite solo hacer un solo cambio.

El problema que explico se solucionaría con solo escribir el margin para IE, ^^ solo el margin, sin repetir el resto del código.

^^

Por J O S

712 de clabLevel

1 tutorial

Genero:Masculino  

Lima, Perú

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.