Buenas.
Estoy intentando aprovechar las transiciones de CSS3 para simplificar un efecto de cambio gradual con javascript. La idea es sencilla. Tengo un texto:
Y cuando le doy a un botón se convierte en:
Pero la idea es que esta inserción sea gradual. Esto se me ha ocurrido hacerlo iniciando la opacidad y tamaño de la fuente del elemento insertado a 0 y luego cambiarla con una transición. Sin embargo, algo debo hacer mal.
Muestro el código HTML:
Y el código Javascript
:
Código Javascript
:
Ver original// crear elemento del tirón
Document.prototype.create = function( tag, text ) {
var elem = document.createElement( tag );
if( typeof text == 'string' ) {
elem.appendChild( document.createTextNode( text ) );
} else if( text instanceof Node ) {
elem.appendChild( text );
} else {
elem = null;
}
return elem;
}
// inserta node como el hijo pos-esimo
Node.prototype.insert = function ( node, pos ) {
var nodes = this.childNodes;
var n = nodes.length;
if( pos < n ) {
this.insertBefore( node, nodes[pos] );
} else if( pos == n ) {
this.appendChild( node );
} else {
return null;
}
return node;
}
window.onload = function() {
document.getElementById( 'button_1' ).onclick = function() {
// crear elemento span invisible
var span = document.create( 'span', 'hola' );
span.style.fontSize = '0px';
span.style.opacity = '0.0';
span.style.color = 'red';
// efecto transition para qu al cambiar alguna propiedad lo haga gradualmente
span.style.setProperty('transition', 'all 2s linear');
span.style.setProperty('-webkit-transition', 'all 2s linear');
// insertar elemento como segundo hijo de p
var section = this.parentNode.parentNode;
elem = section.getElementsByTagName('p')[0];
var inserted = elem.insert( span, 1 );
// hacer visible el nodo
if( inserted ) {
inserted.style.fontSize = '20px';
inserted.style.opacity = '1.0';
}
}
}
A parte de preguntarme donde esta el error, ¿creéis que es buena la idea de aprovecharme de las nuevas propiedades CSS para conseguir el efecto?
Un saludo y gracias!