22 Jun 2004

Tu navegador apesta

Cómo desplegar contenido específico para internet explorer

Como ya algunos notaron, hasta el diseño de éste sitio pone su granito de arena en la mentada campaña de desinternetexplorerización ya que despliega un mensaje específico para los usuarios de este infame navegador. Si no lo han notado, anden vayan y desempolven su IE para que veand e lo que hablo, aqui los espero.

¿Estan de vuelta conmigo? Bien. El reto que me puse a mi mismo fué no modificar en lo absoluto el codigo HTML del sitio y sin embargo cambiar totalmetne el look del sitio utilizando solamente hojas de estilo. Así que esa es la premisa, no usar màs que CSS para lograr nuestro cometido.

Resulta que, el elemento de diseño que escogí para adornar esa solitaría esquina superior derecha era una especie de robot que pareciera flotar sobre el fondo. Esto fué bastante fácil de hacer sin alterar el HTML de mi anterior diseño ya que tenia un elemento DIV llamado cover (lo utilizaba para desplegar un encabezado al azar en el anterior diseño) que ya no iba a utilizar, asi que llo puse donde quería y le cambié el fondo por un bonito PNG transparente que me daba el efecto que necesitaba.

Desgraciadamente, al ver mi diseño en IE recordé que no soporta ese tipo de transparencias, así que e lugar de flotar con singular gracia y belleza, mi robot tenìa un espantoso fondo fris que obstruìa parte del conenido y el diseño. ¿Que hacer en estos casos? ¿Desechar algo que quieres hacer solo porque el explorador que casi todo mundo usa no se le pega la gana desplegarlo bien? A mi se me ocurriò otra solución.

Cuando declaras una propiedad en una hoja de estílo el valor que le asignes sobreescribe cualquier valor anterior que hubiese tenido antes. Es decir, si yo en una hoja de estilos declarara algo asi:


body {
background-color:white;
background-color:red;
}

el fondo de la página sería rojo, ya que la segunda declaración es la que cuenta. Para evitar que una segunda declaración de una regla sobrescriba un valor asignado CSS nos permite usar !important seguido del valor. Lo que indica que no importa qué se declare después este valor no será sobreescrito. Asi, en :


body {
background-color:white !important;
background-color:red;
}

el color de la página quedaría blanco.

Bueno eso no sucede en IE porque simplemente no soporta la declaración !important. Eso es algo malo, pero podemos tomar ventaja de ello. He aqui lo que yo hice:


#cover{
background:transparent url('images/robot.png') no-repeat !important;
background:transparent url('images/ie_sucks.gif') no-repeat; 
}

de esta manera para todos los navegadores que soporten !important el fondo sera robot.png, para el resto será ie_sucks.gif.

Otra forma de aplicar esta técnica es mediante la propiedad display:block y display:none que puede ser utilizada para mostrar o esconder un elemento de bloque, como puede ser un DIV. Por ejemplo, miremos el siguiente código:



<div id="good_browser">
  Estás utilizando un buen navegador, se ve que eres conocedor.
</div>

<div id="suckin_browser">
  Your browser sucks.
	
	Tienes la puerta abierta para que sinnúmero de aplicaciones 
	malignas que poblan la red hagan lo que quieran con tu sistema.
	
	Cambiate a <a href="http://www.mozilla.org"> algo mejor</a>
</div>

tenemos dos elementos de bloque (DIV) con dos diferentes identificadores #good_browser y #suckin_browser. Ahora, si este código aplicamos las siguientes reglas de CSS:


body {
background-color:white !important;
background-color:red;
}

#suckin_browser{
display:none !important;
display:block; 
}

#good_browser{
display:block !important;
display:none; 
}

Tendremos un mensaje para IE y otro para el resto de los navegadores. Vean el ejemplo (es necesario verlo en ambos navegadores pa’ que se note el efecto)

Esta técnica puede ser utilizada de muchas maneras distinatas, puede mostrar un pequeño mensaje por ahí , mas amigables que los mìos si quieren o de plano pueden ponerse un tanto drásticos y reservarse el derecho de admisión solo para aquellos usuarios conocedores que sean dignos de ver su selecto contenido. Ver ejemplo drástico

Espero que les sea de alguna utilidad.

Acabas de leer «Tu navegador apesta», un post escrito por sosa mientras desayunaba archivado en la categoría Tutoriales.

agk #1 | Junio 22, 2004 02:09 PM agk dice:

Ay! cuanto amor le das al IE! <3 <3 <3

Felipe Díaz #2 | Junio 22, 2004 10:57 PM Felipe Díaz dice:

No es precisamente que se le tenga amor al MSIE sino que cualquier WEBMASTER que se precie de serlo tiene que aprender a interactuar con la mayor cantidad de navegadores posibles… Incluso las versiones de MSIE para Mac y el SAFARI deben mantenerse siempre a la vista… El script es ingenioso y lo de la campaña anti-MSIE me parece de total justicia…

mark #3 | Junio 23, 2004 02:46 AM mark dice:

Pues sí, yo diría que el soporte de png’s transparentes es aún más importante que el tan famoso box-model. He soñado layouts sólo posibles con png’s.

Pero ahora, decirles al grueso de la población que su navegador apesta es algo bastante drástico, (aún si es cierto). Cuando vi el título del post pensé que era un javascript que me detectó como usuario de IE (cuando en realidad estoy usando Safari), y realmente me indigné!

A List Apart tiene un tutorial para soportar transparencias desde IE 5 para arriba, pero me pareció demasiado complejo.

Pepe #4 | Junio 24, 2004 01:43 AM Pepe dice:

Me siento ofendido, me sale la “e” de fondo con el texto “Your browser sucks!” cuando en realidad uso Firefox :(

sosa #5 | Junio 24, 2004 08:53 AM sosa dice:

agk: nomas lo que se merece.

felipe: claro que lo mejor es soportar TODOS los navegadores, o por lo menos IE, Mozilla, Netscape y Opera, pero bueno, esta es una tecnica experimental.. del tipo que se pueden aplicar en blogs y paginas personales, nunca la usaría en un proyecto comercial ;)

Mark: Si he leído esa tecnica (creo que se llama IE7 ¿no?) pero efecivamente es muy complicada y como lo comenta Dave Shea es algo leeeenta.

Pepe: Disculpa, tal vez te confundiste… en la imágen de este post sí sale la imagen de ie_sucks independientemente del navegador que uses, pero en el diseño no .. ¿o si?… si es asi lo lamento mucho.

epuk #6 | Junio 28, 2004 10:51 PM epuk dice:

Una alternativa más para lo de los PNG’s en el Internet Explorer:
http://homepage.ntlworld.com/bobosola/

Gilberto #7 | Agosto 7, 2004 07:58 PM Gilberto dice:

Estoy intentando documentarme acerca de un problema que tengo en mi site. Baje la plantilla de css-garden básica y sobre ella monte el nímero correspondiente a agosto.
Sucede que en IE6 el background de la page princ no se carga. Aparece en gris (?)mientras en la page de los art., todo bien.
Por favor un consejo, un comentario o diganme que no me van a contestar pero contesten o comenten.
Ya baje el otro navegador y todo OK.
Gracias

osymuzhln asmr #8 | Abril 20, 2007 09:36 AM osymuzhln asmr dice:

kyndcq ktsv laewcn mshiwdve dixbnv ujyrvb pjmvzc

Contribuye a la discusión

  • Si quieres puedes tener una imagen que te distinga cuando comentes utilizando el servicio de Gravatar
  • Todo post ofensívo y/o ajeno a la discusión será eliminado inmediatamente
  • El HTML no está permitido, pero puedes formatear usando la sintáxis de Textile
  • Si quieres decirme algo privado ;) puedes utilizar la forma de contacto