Siguiendo la sugerencia de JiminP ....
hice un jsFiddle que lo hará "sin problemas" de transición entre dos vanos por si alguien está interesado en ver esto en acción. Tiene dos opciones principales:.
- un palmo desvanece al mismo tiempo que otro lapso se está desvaneciendo en
- un palmo desvanece seguido de otro período de aumento gradual
La primera vez que haga clic en el botón, se producirá el número 1 anterior. La segunda vez que haga clic en el botón, se producirá el número 2. (Hice esto para que pueda comparar visualmente los dos efectos.)
Pruébelo: http://jsfiddle.net/jWcLz/594/
Detalles:
número 1 anterior (el efecto más difícil) se lleva a cabo mediante la colocación los tramos directamente uno encima del otro a través de CSS con un posicionamiento absoluto. Además, los animes de jQuery no están encadenados juntos, por lo que se pueden ejecutar al mismo tiempo.
HTML
<div class="onTopOfEachOther">
<span id='a'>Hello</span>
<span id='b' style="display: none;">Goodbye</span>
</div>
<br />
<br />
<input type="button" id="btnTest" value="Run Test" />
CSS
.onTopOfEachOther {
position: relative;
}
.onTopOfEachOther span {
position: absolute;
top: 0px;
left: 0px;
}
JavaScript
$('#btnTest').click(function() {
fadeSwitchElements('a', 'b');
});
function fadeSwitchElements(id1, id2)
{
var element1 = $('#' + id1);
var element2 = $('#' + id2);
if(element1.is(':visible'))
{
element1.fadeToggle(500);
element2.fadeToggle(500);
}
else
{
element2.fadeToggle(500, function() {
element1.fadeToggle(500);
});
}
}
Si desea cambiar el texto 'sin problemas', es posible utilizar dos '' s superposición y hacer algún trabajo. O si solo quiere cambiar el texto 'al instante', puede usar '.text()'. PD: Puedes usar '' para diseñar en lugar de ''. – JiminP