CSS

Ξ 8 comentarios

Cómo superponer contenido sobre una animación en Flash

por Xabadu
Cómo superponer contenido sobre una animación en Flash

Gracias al posicionamiento mediante CSS es posible controlar el lugar donde aparecerá cada uno de los elementos de nuestras páginas en la pantalla de los visitantes. Si bien con propiedades como float es posible acomodar con facilidad cada capa en un costado de la pantalla, hay una propiedad muy interesante que nos permite superponer distintos contenidos entre sí y de esta forma lograr un complejo efecto visual sobre animaciones, imágenes u otro tipo de contenidos que queramos desplegar.

Es por eso que hoy, en un nuevo tutorial que les trae CLH, estaremos viendo en detalle la propiedad z-index de CSS, la cual nos permite lograr lo antes descrito.

El detalle, como siempre, después del salto.

Cómo superponer contenido sobre una animación en Flash

Si bien lo que veremos hoy es bastante más generalizado que ‘Superponer contenido sobre una animación en Flash’, hemos decidido denominarlo de esa forma ya que es uno de los problemas más comunes que llevan a la profundización de esta propiedad. Sin embargo, lo expuesto hoy puede aplicarse para todo tipo de contenido, incluyendo imágenes, textos o menús de navegación entre otras cosas.

Con eso claro, vamos con lo primero:

Implementos necesarios:

  1. Opcionalmente un editor Web. De cualquier forma de no utilizar alguno, se puede realizar el procedimiento mediante bloc de notas.

Antes de entrar de lleno al procedimiento, es bueno hacer una aclaración de conceptos. Como mencionábamos en la introducción de este tutorial, estaremos hablando de y trabajando con la propiedad z-index de CSS. Así que para los curiosos (como Topher) y los preguntones (como Dexter):

¿Qué es z-index?

La pregunta de la olla millonaria de caldos mag.. sin propaganda mejor clave de todo este asunto. Si nos remontamos a épocas antiguas, por alla por los tiempos estudiantiles de cada uno y hacemos un pequeño repaso por matemáticas, o más especificamente geometría análitica, es posible recordar aquellos temibles contenidos sobre el plano cartesiano, rectas, pendientes y demases.

Si hacemos más memoria aún, recordaremos que un factor común de esos contenidos era cuando nos hablaban sobre los puntos en el espacio y los ejes a los que pertenecían. Esos ejes, al menos en ese momento, eran principalmente 2: el eje x, el cual representaba la horizontalidad y el eje y, el cual representaba la verticalidad. Para los que le hayan hecho la cruz a la geometría posterior a eso.. (la cruz.. intersección de 2 puntos.. humor matemático y juego de palabras, que lindo ¿no?) y se hayan perdido el resto de la historia, existe además un tercer eje, el cual es conocido como eje z y representa la profundidad en el espacio. Esto se relaciona directamente a las 3 dimensiones en las que vivimos y vemos los seres humanos: horizontal (x), vertical (y), profundidad (z). Esta es la parte donde todos decimos “Oooohhhh” al ver como todo está conectado entre sí.

Computacionalmente el asunto no es muy diferente. La pantalla en donde vemos todo tipo de contenidos, desde recursos multimedia, archivos, aplicaciones, juegos, etc. opera con la lógica del plano, teniendo un eje horizontal y uno vertical, los cuales son representados por las resoluciones de pantalla (por ej. al hablar de una resolución de 1024×768 pixeles, estamos diciendo que en la pantalla vemos 1024 pixeles horizontalmente y 768 de forma vertical). A su vez acá también tenemos un plano z de profundidad, el cual si bien a simple vista no notamos, si existe. La mejor prueba para notarlo es ver que al momento de abrir una aplicación, el escritorio no desaparece, solo queda parcial o totalmente oculto por el nuevo contenido que se superpuso.

En diseño Web, o más especificamente en CSS, podemos manejar el tema de las profundidades de los contenidos que estamos desplegando. Esto lo hacemos mediante la propiedad z-index, la cual se encarga de asignar una posición de profundidad a cada contenido de acuerdo al valor que le demos. A mayor valor asignado a esta propiedad para un contenido, se irá superponiendo a cada contenido restante que tenga un valor menor. Al final, todos los contenidos irán formando una pila, de menor a mayor.

Para que un elemento pueda hacer uso de la propiedad z-index, debe siempre estar posicionado, ya sea absoluta o relativamente. Si el elemento no está posicionado, no podrá usarse la propiedad. Adicionalmente, si 2 elementos comparten el mismo z-index se posicionarán de acuerdo al orden que le hayamos dado en el documento HTML.

Con esa larga explicación lista, podemos empezar a trabajar en nuestro proyecto de hoy y ver como resulta todo:

Procedimiento:

Lo que haremos hoy será bastante simple. Crearemos un documento HTML en donde añadiremos un pequeño encabezado, el cual estará compuesto de una animación flash (en el fondo) y una barra en imagen (superpuesta a la animación) para luego insertar un menú de navegación. Junto a eso añadiremos un pequeño botón como detalle. Este botón podrá ser manipulado tal como si fuese una imagen normal, es decir, añadiéndole un enlace total o por mapa, viendo sus propiedades, copiando la ruta, etc. Lo mismo corre para el menú de navegación.

Entonces basicamente contaremos con 3 capas: una para la animación, otra para nuestra barra y menú de navegación y finalmente una que irá sobre todas las anteriores con el botón.

1.- Utilizaremos los siguientes elementos:

Una animación de fondo:

Un botón (para hacer botones, los invitamos a revisar este tutorial donde hemos cubierto el proceso por completo):

Y adicionalmente hemos creado una barra de color blanco (la cual por razones obvias no pondremos acá) de 1×60 px, la cual montaremos sobre la animación y modificaremos vía CSS.

Para no extender en demasía este tutorial, el menú de navegación lo incluiremos como texto plano, con el fin de ubicar donde iría el código final y como se posiciona en términos de profundidad con respecto a los otros elementos. Empezar a hacer el menú desde cero acá probablemente nos llevaría un buen rato y lo hemos visto en otros tutoriales, así que lo haremos de esta forma.

2.- Con nuestros elementos listos, prepararemos nuestro CSS, el cual definirá las propiedades a aplicar a cada parte del contenido:

body{
margin: 0;
}

#uno{
position: absolute;
z-index: 1;
width:100%;
}

#dos{
position: absolute;
z-index: 2;
background-image: url(barra.png);
background-repeat: repeat;
width: 100%;
height: 60px;
opacity: .50;
-moz-opacity: .50;
filter: alpha(opacity=50);
margin-top: 10px;
font-weight: bold;
text-indent:20px;
}

#tres{
position:absolute;
z-index: 3;
margin-left:450px;
}

Entonces ordenemos el cuento:

  • Cada id declarado (uno, dos y tres) corresponden a uno de los elementos que agregaremos (animación en el uno, barra y menú de navegación en el dos y botón en el tres). Los tres han sido posicionados de forma absoluta y se les ha asignado un z-index correlativo con el fin de que la animación salga al fondo, sobre ella la barra y el menú de navegación y sobre todos ellos el botón.
  • A su vez, la barra se ha agregado como fondo en el id dos, con el fin de escribir el texto sobre esta imagen de fondo y así poder aprovechar una imagen pequeña (1×60 px) y repetirla a lo largo del encabezado.
  • Adicionalmente hemos utilizado las propiedades opacity, -moz-opacity y filter para agregar transparencia a la barra y que no se vea solida en blanco, si no que nos permita ver el resto de la animación que está en el fondo.
  • Todo lo demás lo hemos acomodado mediante márgenes e indentaciones de texto para acomodar de acuerdo al diseño que teníamos en mente.

Ahora ojo, hemos hecho todos los posicionamientos con medidas fijas en pixeles, para efectos de demostración. Al momento de hacer diseños definitivos es bueno adaptarse a como se ha diseñado el sitio completo, especialmente si son diseños líquidos cuyas medidas están en porcentajes.

3.- Con el CSS listo, ahora crearemos un archivo HTML, en donde insertaremos div’s con el respectivo contenido, los cuales tomarán propiedades del CSS y se posicionarán como lo teníamos pensado originalmente. Entonces:

<html>
<head>
<title>Ejemplo de superposicion</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="uno">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/
swflash.cab#version=7,0,19,0" width="700" height="157">
<param name="movie" value="fondo.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed wmode="transparent" src="fondo.swf" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" width="700" height="157"></embed>
</object>
</div>
<div id="dos"><h2>Inicio | Quienes Somos | Contacto</h2></div>
<div id="tres"><img src="boton.png" /></div>
</body>
</html>

Guardamos todo y vemos en nuestro navegador favorito para observar el resultado final:

Como podemos ver en la imagen anterior, tenemos nuestra animación hecha en Flash en el fondo. Sobre ella se ha agregado la barra que creamos (repetida y con la opacidad alterada vía CSS). Sobre la barra nuestro menú de navegación y sobre todo ello el botón. Se ha ordenado tal como los valores que hemos dado a cada z-index.

Simple ¿no?. Así que en resumen:

¿Qué hemos aprendido hoy?

  • Mediante z-index podemos manejar la profundidad de varios elementos, aún cuando compartan el mismo espacio físico.
  • Para utilizar z-index, debemos posicionar los elementos de forma relativa o absoluta.
  • 2 elementos pueden compartir el mismo z-index y serán mostrados de acuerdo al orden que se agregan.
  • Podemos superponer todo tipo de contenidos, así que a animarse y probar.
  • La geometría analítica está relacionada a como vemos y vivimos los humanos, y todo eso a como se grabó Avatar.

Y con eso damos todo por terminado hoy, recordándoles que como siempre, este tutorial ha sido:

Cualquier duda o comentario que tengan, no sean tímidos, los invitamos a dejarnos unas líneas a continuación. Somos buena onda para responder, lo prometemos 🙂

Esperamos que este tutorial haya sido de utilidad para Uds.

Muchas gracias por leer y será hasta una próxima oportunidad.

Comparte este tutorial

El culpable de todo esto

Las tardes gloriosas de domingo y las grandes ovaciones a estadio lleno, no son algo extraño para Xabadu. Luego de ser descubierto a los 4 años en un partido de barrio por los ojeadores del gran Aviación F.C., sacudió el mercado nacional al ser traspasado en $500 pesos chilenos (1 USD) y 3 coca colas al renombrado Estrella Blanca de Lolol. Luego de una impresionante carrera por equipos como Lozapenco, Santa Cruz, Deportivo Lago Chungará y una incursión en la 3a división del futbol de Kazajstan, su record imbatible hasta la fecha de 1257 goles en 20 partidos lo llevo a ser elegido como uno de los arqueros más recordados en la historia pelotera nacional. Una lesión en el colmillo superior derecho lo llevó al retiro el año 2003, pero está de vuelta y sin duda que su jerarquía y experiencia internacional será un gran aporte.

En los barrios marginales se le conoce como: Xabadu

Comentarios en Facebook

8 Comentarios

  • Complemento:

    Como Flash es un objeto externo al HTML inyectado (literalmente) vía un plugin (el plugin de Flash de Adobe), no es un objeto “natural” (por así decirlo), y esto afecta en la interacción con el resto de los objetos. Por esta razón es que hay que obligar al plugin para que llame al Flash de manera tal que obedezca ciertas propiedades normales de CSS como el resto de las comunes y mortales etiquetas, como el z-index puesto en esta técnica. Para esto cambiamos el “window mode”.

    Hay varios métodos para llamar a un Flash dentro de un HTML (embed, object u javascript), pero todas poseen este parámetro. La opción por defecto de wmode es “window”, lo que hará que ponga el SWF en una posición pero sin interactuar con el resto de las etiquetas. En resumen, no tendría z-index de estar en wmode=”window”.

    Entonces, es importante llamar al SWF en modo “transparent” u “opaque” según el método. Por ejemplo, en Object, se llama así:

    <param name=”wmode” value=”transparent” /> 

    Si no me creen, prueben en este ejemplo cambiar los valores de “transparent” por “window” y verán a qué me refiero.

    ¡Saludos!

  • @Álex Acuña Viera: Muy buen aporte, sin duda hay que tenerlo en mente.

    Gracias por tu comentario.

  • muchas gracias, con esta información pude tapar un link que tiene el archivo flash que muestra las fotos, ya que no pude sacarlo aun editandolo; y con respecto a la barra Menu, excelente. Ahora la indicación <param name=”wmode” value=”transparent” /> , en este caso no aplica. GRACIAS – PUERTO MONTT – CHILE

  • muy buena explicacion, oye, tengo un problema y pues quiero que me heches la mano, voy aser concreto, como puedo meter un archivo flash gernerado en lazlo aun template, si me ayudas te agradeceria mucho, bye!, por si te sirve de algo, el formato que me arroja lazlo es .lzx.swf8 que al parecer no lo detecta el template, gracias!

  • La verdad que me resulto muy util. Agradezco tu tiempo y dedicacion para ayudar a los que recien empezamos.
    Juan

  • Muy buenos dias…
    No me quedo claro para que sirve hacer esto… ¿Me podes explicar?

  • Buen aporte pero no funciona en Mozilla Firefox

    alquien tiene alguna idea?

  • amigo muchas gracias solucinaste el truco a estado al llamar desde html con lo que dice el amigo Álex Acuña Viera lo probe en [firefox 20.0.1 && Internet Explorer 9]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Gente linda que nos quiere

Donde mas estamos

news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

slot mahjong

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

psda 438000021

psda 438000022

psda 438000023

psda 438000024

psda 438000025

psda 438000026

psda 438000027

psda 438000028

psda 438000029

psda 438000030

psda 438000031

psda 438000032

psda 438000033

psda 438000034

psda 438000035

psda 438000036

psda 438000037

psda 438000038

psda 438000039

psda 438000040

psda 438000041

psda 438000042

psda 438000043

psda 438000044

psda 438000045

psda 438000046

psda 438000047

psda 438000048

psda 438000049

psda 438000050

psda 438000051

psda 438000052

psda 438000053

psda 438000054

psda 438000055

psda 438000056

psda 438000057

psda 438000058

psda 438000059

psda 438000060

psda 438000061

psda 438000062

psda 438000063

psda 438000064

psda 438000065

psda 438000066

psda 438000067

psda 438000068

psda 438000069

psda 438000070

psda 438000071

psda 438000072

psda 438000073

psda 438000074

psda 438000075

psda 438000076

psda 438000077

psda 438000078

psda 438000079

psda 438000080

cuaca 638000086

cuaca 638000087

cuaca 638000088

cuaca 638000089

cuaca 638000090

cuaca 638000091

cuaca 638000092

cuaca 638000093

cuaca 638000094

cuaca 638000095

cuaca 638000096

cuaca 638000097

cuaca 638000098

cuaca 638000099

cuaca 638000100

cuaca 638000101

cuaca 638000102

cuaca 638000103

cuaca 638000104

cuaca 638000105

article 710000111

article 710000112

article 710000113

article 710000114

article 710000115

article 710000116

article 710000117

article 710000118

article 710000119

article 710000120

article 710000121

article 710000122

article 710000123

article 710000124

article 710000125

article 710000126

article 710000127

article 710000128

article 710000129

article 710000130

article 710000131

article 710000132

article 710000133

article 710000134

article 710000135

article 710000136

article 710000137

article 710000138

article 710000139

article 710000140

article 710000141

article 710000142

article 710000143

article 710000144

article 710000145

article 710000146

article 710000147

article 710000148

article 710000149

article 710000150

article 710000151

article 710000152

article 710000153

article 710000154

article 710000155

article 710000156

article 710000157

article 710000158

article 710000159

article 710000160

article 999990051

article 999990052

article 999990053

article 999990054

article 999990055

article 999990056

article 999990057

article 999990058

article 999990059

article 999990060

article 999990061

article 999990062

article 999990063

article 999990064

article 999990065

article 999990066

article 999990067

article 999990068

article 999990069

article 999990070

article 999990071

article 999990072

article 999990073

article 999990074

article 999990075

cuaca 898100116

cuaca 898100117

cuaca 898100118

cuaca 898100119

cuaca 898100120

cuaca 898100121

cuaca 898100122

cuaca 898100123

cuaca 898100124

cuaca 898100125

cuaca 898100126

cuaca 898100127

cuaca 898100128

cuaca 898100129

cuaca 898100130

cuaca 898100131

cuaca 898100132

cuaca 898100133

cuaca 898100134

cuaca 898100135

cuaca 898100136

cuaca 898100137

cuaca 898100138

cuaca 898100139

cuaca 898100140

cuaca 898100141

cuaca 898100142

cuaca 898100143

cuaca 898100144

cuaca 898100145

news-1701