En el video tutorial de hoy, te mostraré cómo crear un elemento deslizante de "pantalla dividida" (o IU, como prefieras llamarlo) usando JavaScript. La inspiración para esto vino de una página en el sitio web de Corsair; Veamos cómo podemos construir uno para nuestros propios proyectos..
Veamos primero una demostración de lo que estamos construyendo. Vea el proyecto en CodePen, o tome los archivos de origen de GitHub.
Entonces, ¿cómo se hace esto? Comience por construir dos paneles separados en su marca HTML. He usado dos div
elementos con una clase de panel
. El primero tiene una clase adicional de fondo
, el otro una clase adicional de parte superior
. Cada uno contiene otro div
para envolver los contenidos.
Coloque cualquier contenido que desee (imágenes, encabezados, etc.) dentro de la contenido
divs.
Con los hechos, añade un nuevo. div
, antes del cierre vista dividida
etiqueta para actuar como un mango.
Los primeros estilos importantes apilarán nuestros dos paneles uno encima del otro, asegurándose de que también sean fluidos.
/ * Paneles. * / .splitview posición: relativo; ancho: 100%; min-height: 45vw; desbordamiento: oculto; .panel posición: absoluta; ancho: 100vw; min-height: 45vw; desbordamiento: oculto;
Estilo de cada panel individual-parte superior
y fondo
-diferente, como darles diferentescolor de fondo
, y estiliza el contenido dentro de ellos como te plazca. Una cosa a tener en cuenta es el índice z de cada uno, para asegurarse de que se apilen en el orden correcto.
.inferior color de fondo: rgb (44, 44, 44); índice z: 1; .top background-color: rgb (77, 69, 173); índice z: 2;
Ahora tenemos nuestro panel superior cubriendo completamente el de abajo, así que experimentemos reduciendo su ancho:
.arriba color de fondo: rgb (77, 69, 173); índice z: 2; ancho: 50vw;
Debería encontrar que ahora tiene algo como esto, con el panel superior solo llegando al medio (50vw
) de la página:
Ahora que hemos trabajado con CSS, pasemos a JavaScript y veamos si podemos animar este efecto de máscara deslizante. Comenzaremos pidiéndole al navegador que ejecute una función, pero solo una vez que el DOM se haya cargado:
document.addEventListener ('DOMContentLoaded', function () );
El resto de nuestro código irá dentro de esta función, entre las llaves..
A continuación, asignaremos algunas variables extrayendo el elemento principal, el panel superior (es decir, el único que cambiaremos) y el elemento de control..
var parent = document.querySelector ('. splitview'), topPanel = parent.querySelector ('. top'), handle = parent.querySelector ('. handle'),
Antes de seguir adelante, vamos a diseñar el mango.
/* Encargarse de. * / .handle altura: 100%; posición: absoluta; bloqueo de pantalla; color de fondo: rgb (253, 171, 0); ancho: 5px; arriba: 0; izquierda: 50%; índice z: 3;
Es una barra amarilla de 5 píxeles de ancho, que corre a la altura del contenedor y se coloca en el centro de la ventana gráfica. Tiene un índice z
de 3 para asegurarse de que se sienta en la parte superior.
Queremos capturar las coordenadas x del cursor del mouse cada vez que lo movemos dentro de la ventana gráfica. Luego queremos mover la manija y establecer el ancho del panel superior de acuerdo con esas coordenadas.
Comenzamos con un detector de eventos en el elemento principal y luego configuramos izquierda
propiedad de estilo del mango como igual a la evento.clienteX
valor.
parent.addEventListener ('mousemove', function (event) // Mueve el manejador. handle.style.left = event.clientX + 'px';);
Eso se ocupa de nuestro controlador en movimiento, ahora redimensionemos el panel, de nuevo haciéndolo igual a evento.clienteX
.
parent.addEventListener ('mousemove', function (event) // Mueve el controlador. handle.style.left = event.clientX + 'px'; // Ajusta el ancho del panel superior. topPanel.style.width = event.clientX + 'px';);
Bien hecho por llegar al final; Con ese CSS y JavaScript relativamente sencillos, hemos creado un brillante efecto de máscara deslizante en pantalla dividida. Para ir más lejos, como lo hago en el video, también podemos inclinar la manija - echa un vistazo a la demostración en CodePen para ver cómo se logra!