Esos rectángulos pueden ser controlados de manera individual si les colocamos un nombre único, es decir si los identificamos con precisión y para eso, usamos un parámetro llamado ID. Por ejemplo:
<div id="pepito"> ....... </div>
<img id="unaImagen" src="laImagen" />
<p id="TEXTO1234"> ....... </p>
Los IDs deben ser únicos, es decir, no debe haber dos iguales en una misma página porque si luego los queremos manipular, el navegador no sabrá a cuál nos referimos.
Es gracias a esos IDs que podemos usar JavaScript para cambiar dinámicamente (cuando la pagina ya se ha cargado) las propiedades de esos bloques; por ejemplo, mostrarlos u ocultarlos a voluntad.
Usando CSS es sencillo ocultar el contenido de algo, basta colocarle la propiedad display: none:
<div style="display: none;"> ... este es el contenido ... </div>
<div style="display: block;"> ... este es el contenido ... </div>
<div> ... este es el contenido ... </div>
<div style="display: none;"> ... este es el contenido ... </div>
Pero ¿cómo hacemos para permutar entre ambos estados? ¿cómo hacemos para que algo oculto se muestre y algo visible se oculte? Para eso usamos JavaScript, dándole una instrucción que cambie el estilo CSS de algún elemento al que le hemos dado un nombre. En general, sería así:
nombreID.style.propiedad = 'valor';
Para que no tengamos problemas a la hora de indicarle al navegador cuál es la etiqueta que vamos a modificar, en lugar de usar nombreID, usamos una función interna:
getElementById('nombreID').propiedad = 'valor';
o bien:
document.getElementById('nombreID').propiedad = 'valor';
La forma de identificar la propiedad suele ser similar a la propiedad CSS aunque hay variaciones. En este caso serán:
getElementById('nombreID').style.display = 'block';
getElementById('nombreID').style.display = 'none';
¿Cómo aplicamos esto? Para que funcione siempre, sin importar el navegador, lo mejor es utilizar enlaces. En estos enlaces, basta agregar un parámetro más, un evento. El más común sería onclick:
<a href="javascript:void(0);" onclick="getElementById('ejemplo').style.display='block';">TEXTO O IMAGEN</a>
<div id="ejemplo" style="display:none;'> ....... </div>
¿Y cómo lo ocultamos otra vez? Una forma sería agregarle otro enlace dentro del elemento oculto que lo cierre:
<a href="javascript:void(0);" onclick="getElementById('ejemplo').style.display='block';">TEXTO O IMAGEN</a>
<div id="ejemplo" style="display:none;'>
.......
<a href="javascript:void(0);" onclick="getElementById('ejemplo').style.display='none';">CERRAR</a>
</div>
<script type='text/javascript'>
//<![CDATA[
function toggle(cual) {
var elElemento=document.getElementById(cual);
if(elElemento.style.display == 'block') {
elElemento.style.display = 'none';
} else {
elElemento.style.display = 'block';
}
}
//]]>
</script>
<a href="javascript:void(0);" onclick="toggle('ejemplo');">TEXTO O IMAGEN</a>
<div id="ejemplo" style="display:none;'> ....... </div>
Hay muchos métodos para eso pero, aqui va otro script más que podemos agregar antes de </head>:
<script type='text/javascript'>
//<![CDATA[
function toggleEnlace(accion, cual) {
if (accion == "mostrar") {
document.getElementById("miContenido"+cual).style.display = "block";
document.getElementById("miEnlace"+cual).href="javascript:toggleEnlace('ocultar',"+cual+")";
document.getElementById("miEnlace"+cual).innerHTML = "CONTRAER";
}
if (accion == "ocultar") {
document.getElementById("miContenido"+cual).style.display = "none";
document.getElementById("miEnlace"+cual).href="javascript:toggleEnlace('mostrar',"+cual+")";
document.getElementById("miEnlace"+cual).innerHTML = "EXPANDIR";
}
}
//]]>
</script>
<a id="miEnlace1" href="javascript:toggleEnlace('mostrar', 1)">EXPANDIR</a>
<div id="miContenido1" style="display:none;"> ... CONTENIDO OCULTO 1 ... </div>
<a id="miEnlace2" href="javascript:toggleEnlace('mostrar', 2)">EXPANDIR</a>
<div id="miContenido2" style="display:none;"> ... CONTENIDO OCULTO 2 ... </div>
EJEMPLO 1 EXPANDIR | EJEMPLO 2 EXPANDIR | EJEMPLO 3 EXPANDIR
0 comentarios:
Publicar un comentario