Veamos los casos típicos de mostrar y ocultar elementos; inevitablemente, requerimos alguna clase de script porque con CSS no podemos interactuar con clicks del ratón. Una función elemental que hace esto podría ser así:
function SINO(cual) {
var elElemento=document.getElementById(cual);
if(elElemento.style.display == 'block') {
elElemento.style.display = 'none';
} else {
elElemento.style.display = 'block';
}
}<div id="demo1" style="display:none;">El elemento que está oculto.</div>
<a href="javascript:void(0);" onclick="SINO('demo1')">Mostar / Ocultar</a>function SINO(cual) {
var elElemento=document.getElementById(cual);
if(elElemento.style.visibility == "visible") {
elElemento.style.visibility = "hidden";
} else {
elElemento.style.visibility = "visible";
}
}function SINO(cual) {
var elElemento=document.getElementById(cual);
if(elElemento.style.opacity == "1" || elElemento.style.filter == "alpha(opacity=100)") {
elElemento.style.opacity = "0";
elElemento.style.filter = "alpha(opacity=0)";
} else {
elElemento.style.opacity = "1";
elElemento.style.filter = "alpha(opacity=100)";
}
}<script>
var fadeEffect=function() {
return{
init:function(id, flag, target){
this.elem = document.getElementById(id);
clearInterval(this.elem.si);
this.target = target ? target : flag ? 100 : 0;
this.flag = flag || -1;
this.alpha = this.elem.style.opacity ? parseFloat(this.elem.style.opacity) * 100 : 0;
this.si = setInterval(function(){fadeEffect.tween()}, 20);
},
tween:function() {
if(this.alpha == this.target){
clearInterval(this.si);
} else {
var value = Math.round(this.alpha + ((this.target - this.alpha) * .05)) + (1 * this.flag);
this.elem.style.opacity = value / 100;
this.elem.style.filter = 'alpha(opacity=' + value + ')';
this.alpha = value
}
}
}
}();
</script>
<style>
.divbotones {
height:35px;
margin:0 auto;
width: 500px;
}
.elboton {
background-color: #CCC;
border: 1px solid #EEE;
border-radius: 3px;
color:#555;
cursor:pointer;
padding: 4px 0 5px;
text-align:center;
width:200px;
}
.elboton:hover {
background-color: #D9D9D9;
border: 1px solid #FFF;
color: #333;
}
.sinodemos {
background:#355C33;
border:1px solid #548954;
border-radius:3px;
color:#79AF72;
height:26px;
margin-bottom:10px;
padding:9px 10px 0;
text-shadow:1px 1px #21341D;
}
#demoFADE {
opacity:0;
filter:alpha(opacity=0);
}
</style>
<div id="demoFADE" class="sinodemos"> El elemento que está oculto. </div>
<div class="divbotones">
<div class="elboton" onclick="fadeEffect.init('demoFADE', 1)" style="float:left">Fade In</div>
<div class="elboton" onclick="fadeEffect.init('demoFADE',0)" style="float:right">Fade Out</div>
</div>Por suerte, hay quienes no creen así: "las librerías son importantes y claro, nos ahorran tiempo pero también es importante tanto para principiantes como para personas con conocimientos medios, tener tutoriales que expliquen cómo funcionan las cosas".
Concuerdo con esa idea y agregaría que el uso de cualquier herramienta (las librerías son eso) siempre debe estar acompañado de una mínima dosis de entendimiento. Usar una librería para poner un efecto simple en un botón es, como mínimo, un desperdicio porque en última instancia, lo que hacen no es otra cosa que facilitarnos tareas pero de ninguna manera son códigos más simples; por el contrario, son mucho más sofisticados y requieren muchos más procesos.
No hay nada malo ni nada bueno en estas cosas ya que están fuera de cualquier ética, sólo son herramientas que usamos o no usamos. Ya sé, estamos en plena moda de jquerismo y habrá que soportar el temporal pero también habrá que recordar que nunca hay solo un método para conseguir un resultado; que siempre hay alternativas y que toda moda, decía mi abuela, es pasajera.
Por ejemplo, esta sería una forma de hacer algo similar a lo anterior con un script más rudimentario pero aprovechándose de la propiedad transition por lo que su resultado final estará limitado a todos los navegadores modernos a excepción de Internet Explorer:
function fadeEffectTRANS(id,valor) {
var cual = document.getElementById(id);
cual.style.opacity = valor;
cual.style.filter = 'alpha(opacity=' + valor + ')';
}#demoFADE {
opacity:0;
filter:alpha(opacity=0);
-moz-transition: all 1s ease-in-out;
-webkit-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}




