Para aquellos proyectos simplísimos en los que nos apetece añadir una transición entre pantallas para contar una idea os dejo una versión inicial de mi método.
Un simple archivo HTML con el contenido de las pantallas:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8" /> <title>Animaciones</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="animaciones.css" /> </head> <body> <div class="panta" id="panta1"><h1>Contenido de la pantalla 1</h1></div> <div class="panta" id="panta2"><h1>Contenido de la pantalla 2</h1></div> <div class="panta" id="panta3"><h1>Contenido de la pantalla 3</h1></div> <div class="panta" id="panta4"><h1>Contenido de la pantalla 4</h1></div> <button type="button" class="botoni" id="anterior" onclick="mostrar('anterior', 'slide_left');">Anterior</button> <button type="button" class="botoni" id="siguiente" onclick="mostrar('siguiente', 'slide_right');">Siguiente</button> <script src="animaciones.js"></script> </body> </html>
Un archivo aparte con el CSS básico (las animaciones y unos ajustes comunes):
/***** Animaciones *****/ @keyframes fade_in { 0% {opacity: 0;} 100% {opacity: 1;} } @keyframes slide_left { 0% {left: -100%;} 100% {left: 0;} } @keyframes slide_right { 0% {left: 100%;} 100% {left: 0;} } /***** Animaciones Webkit *****/ @-webkit-keyframes fade_in { 0% {opacity: 0;} 100% {opacity: 1;} } @-webkit-keyframes slide_left { 0% {left: -100%;} 100% {left: 0;} } @-webkit-keyframes slide_right { 0% {left: 100%;} 100% {left: 0;} } /***** Comunes *****/ body { overflow: hidden; } .panta { position: absolute; width: 100%; left: 0; top: 0; bottom: 10%; background-color: white; animation-duration: 1s; -webkit-animation-duration: 1s; } .botoni { position: absolute; top: 90%; bottom: 0; width: 50%; } #anterior { left: 0; right: 50%; } #siguiente { left: 50%; right: 0; } /***** Pantallas *****/ #panta1 { background-color: pink; } #panta2 { background-color: green; } #panta3 { background-color: yellow; } #panta4 { background-color: orange; }
Y otro archivo aparte con el programa en «Pure Vanilla Javascript».
var min_panta = 1; var max_panta = document.querySelectorAll('.panta').length; var num_panta = 1; // Inicializar num_panta var z = 99; // zIndex inicial var animaciond = 'fade_in'; // Animación por defecto mostrar(num_panta); function mostrar(panta, animacion) { if(panta == 'anterior') num_panta = num_panta - 1; if(panta == 'siguiente') num_panta = num_panta + 1; if(num_panta <= min_panta) { num_panta = min_panta; anterior.disabled = true; anterior.style.cursor = 'not-allowed'; } else if(num_panta >= max_panta) { num_panta = max_panta; siguiente.disabled = true; siguiente.style.cursor = 'not-allowed'; } else { anterior.disabled = false; siguiente.disabled = false; anterior.style.cursor = 'pointer'; siguiente.style.cursor = 'pointer'; } if(!animacion) animacion = animaciond; pantalla = document.getElementById('panta' + num_panta); pantalla.style.zIndex = ++ z; pantalla.style.animationName = animacion; pantalla.style.webkitAnimationName = animacion; pantalla.style.animationName = ''; pantalla.style.webkitAnimationName = ''; setTimeout(function () { pantalla.style.animationName = animacion; pantalla.style.webkitAnimationName = animacion; }, 0); }
A lo mejor luego sigo trabajando en esto. De cualquier manera sé que sabrás sacarle partido.