1. Web Design
  2. UX/UI
  3. UI Design

Cómo Crear un Slider de Pantalla Dividida con JavaScript

En video tutorial de hoy voy a mostrar cómo crear un elemento Slider de "pantalla dividida" (o UI, lo que usted prefiere llamarlo) utilizando JavaScript. Inspiración para este vino de una página en el Sitio Web de Corsair; vamos a ver cómo podemos construir uno para nuestros propios proyectos.
Scroll to top

Spanish (Español) translation by Alfonso Mora (you can also view the original English article)

En video tutorial de hoy voy a mostrar cómo crear un elemento Slider de "pantalla dividida" (o UI, lo que usted prefiere llamarlo) utilizando JavaScript. Inspiración para este vino de una página en el Sitio Web de Corsair; vamos a ver cómo podemos construir uno para nuestros propios proyectos.

Lo que Vamos a Construir

Primero echemos un vistazo a una demo de lo que estamos construyendo. Abra el proyecto CodePen, o agarrar los archivos de código fuente en GitHub.

Please accept marketing cookies to load this content.

Ver el Screencast

Please accept preferences cookies to load this content.

1. Construir los Paneles

¿Cómo se hace esto? Comenzar con la construcción de dos paneles separados en su código HTML. He utilizado dos elementos div con una clase de panel. La primera tiene una clase adicional bottom, el otro una clase adicional top. Cada uno contiene otro div para envolver el contenido.

1
<div class="splitview">
2
    <div class="panel bottom">
3
        <div class="content">
4
        
5
        </div>
6
    </div>   
7
    <div class="panel top">
8
        <div class="content">
9
        
10
        </div>
11
    </div>    
12
</div>        

Poner lo que te gustes en el contenido (imágenes, títulos, etc.) dentro del div content.

Con los hecho, añadir un div nuevo, antes de cerrar lo etiquetamos splitview para actuar como un palanca.

1
<div class="handle"></div>

2. Agregar Algunos Estilos para Apilar a los Paneles

Los primeros estilos importantes acumulará nuestros dos paneles uno encima del otro, asegurándose que estén fluido también.

1
/* Panels. */
2
.splitview {
3
    position: relative;
4
    width: 100%;
5
    min-height: 45vw;
6
    overflow: hidden;
7
}
8
9
.panel {
10
    position: absolute;
11
    width: 100vw;
12
    min-height: 45vw;
13
    overflow: hidden;
14
}

Cada panel individual –top y bottom – diferenciamos dándoles diferentes color con background-color, del estilo y estilo los contenidos dentro de ellos, sin embargo, por favor. Una cosa a destacar es el z-index de cada uno, para asegurarse de que la pila en el orden correcto.

1
.bottom {
2
    background-color: rgb(44, 44, 44);
3
    z-index: 1;
4
}
5
6
.top {
7
    background-color: rgb(77, 69, 173);
8
    z-index: 2;
9
}

3. Aplicar una Simple Mascarilla

Tenemos ahora nuestro panel superior cubriendo por completo el uno debajo, así que vamos a experimentar reduciendo su anchura:

1
.top {
2
    background-color: rgb(77, 69, 173);
3
    z-index: 2;
4
    width: 50vw;
5
}

Usted debe encontrar que algo como esto, tienes ahora con el panel superior sólo llegar a la mitad (50vw) de la página:

4. Lanzando el JavaScript

Ahora que ya tenemos listo los CSS, vamos a recurrir a JavaScript y ver si podemos animar este desplazamiento efecto máscara. Empezaremos haciendo el navegador para ejecutar una función, pero sólo una vez ha cargado el DOM:

1
document.addEventListener('DOMContentLoaded', function() {
2
    
3
});

El resto de nuestro código irá dentro de la función, entre las llaves.

A continuación asignaremos algunas variables por traer al elemento padre, el panel superior (es decir, el único que va cambiando) y el elemento manija.

1
    var parent = document.querySelector('.splitview'),
2
        topPanel = parent.querySelector('.top'),
3
        handle = parent.querySelector('.handle'),

5. Construcción de la Manija

Antes de continuar, vamos al estilo de la manija.

1
/* Handle. */
2
.handle {
3
    height: 100%;
4
    position: absolute;
5
    display: block;
6
    background-color: rgb(253, 171, 0);
7
    width: 5px;
8
    top: 0;
9
    left: 50%;
10
    z-index: 3;
11
}

Es un barra 5px de ancho amarillo, funcionando a la altura del contenedor y colocados en el centro de la ventanilla. Tiene un z-index de 3 para asegurarse de que se este en la parte superior.

Hacen que se Mueva

Queremos tomar las coordenadas x del cursor del ratón cada vez que nos movemos dentro de la vista. Entonces queremos mover la manija y establecer el ancho del panel superior según esas coordenadas.

Empezamos con un detector de eventos en el elemento primario y luego establezca la propiedad estilo left del mango igual al valor event.clientX.

1
parent.addEventListener('mousemove', function(event) {
2
        // Move the handle.

3
        handle.style.left = event.clientX + 'px';
4
});

Que se encarga de nuestro mango móvil, vamos a cambiar ahora el panel, otra vez haciéndolo igual a event.clientX.

1
parent.addEventListener('mousemove', function(event) {
2
        // Move the handle.

3
        handle.style.left = event.clientX + 'px';
4
5
        // Adjust the top panel width.

6
        topPanel.style.width = event.clientX + 'px';
7
});

¡Hemos Terminado!

Bien hecho para alcanzar el fin; con eso relativamente sencillo CSS y JavaScript hemos creado un brillante efecto de máscara deslizante pantalla dividida. Para llevarlo más lejos, como hago en el video, podemos inclinar el mango demasiado – Mira la demo en CodePen para ver cómo se logra!