Slik lager du en skjermbilde med delt skjerm med JavaScript

I dagens videoopplæring skal jeg vise deg hvordan du lager et "splitt-skjerm" skyveelement (eller brukergrensesnitt, uansett hva du foretrekker å kalle det) ved hjelp av JavaScript. Inspirasjonen til dette kom fra en side på Corsairs hjemmeside; la oss se hvordan vi kan bygge en til våre egne prosjekter.

Hva vi skal bygge

La oss først ta en titt på en demonstrasjon av hva vi bygger. Se prosjektet på CodePen, eller ta tak i kildefilene fra GitHub.

Se på Screencast

 

1. Bygg panelene dine

Så hvordan er dette gjort? Begynn med å bygge to separate paneler i HTML-oppslaget ditt. Jeg har brukt to div elementer med en klasse av panel. Den første har en ekstra klasse av bunn, den andre en ekstra klasse av topp. Hver inneholder en annen div å pakke inn innholdet.

Sett inn innholdet du liker (bilder, overskrifter etc.) i innhold divs.

Med de som er gjort, legg til en ny div, før avslutningen splitview tag for å fungere som et håndtak.

2. Legg til noen stiler for å stable panelene

De første viktige stilene vil stable våre to paneler oppå hverandre, og sørg for at de også er væske.

/ * Paneler. * / .splitview posisjon: relative; bredde: 100%; min høyde: 45vw; overløp: skjult;  .panel posisjon: absolutt; bredde: 100vw; min høyde: 45vw; overløp: skjult; 

Stil hvert enkelt panel-topp og bunn-annerledes, for eksempel å gi dem forskjelligebakgrunnsfarge, og stil innholdet i dem, men du vil. En ting å merke seg er z-indeksen for hver, for å sikre at de stabler i riktig rekkefølge.

.bunn bakgrunnsfarge: rgb (44, 44, 44); z-indeks: 1;  .top bakgrunnsfarge: rgb (77, 69, 173); z-indeks: 2; 

3. Påfør en enkel maske

Vi har nå toppplaten vår helt dekker den under, så la oss eksperimentere ved å redusere bredden:

.topp bakgrunnsfarge: rgb (77, 69, 173); z-indeks: 2; bredde: 50vw; 

Du burde finne deg nå har noe slikt, med topppanelet bare når midten (50vw) på siden:

4. Sparking av JavaScript

Nå som vi har utarbeidet ting med CSS, la oss slå på JavaScript og se om vi kan animere denne glidende maskeffekten. Vi begynner med å spørre nettleseren til å utføre en funksjon, men bare når DOM har lastet:

document.addEventListener ('DOMContentLoaded', funksjon () );

Resten av koden vår går innenfor denne funksjonen, mellom de krøllete armbåndene.

Deretter tilordner vi noen variabler ved å hente foreldreelementet, topppanelet (nemlig det eneste vi endrer) og håndtaket.

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

5. Bygg håndtaket

Før vi går videre, la oss stilte håndtaket.

/ * Håndter. * /. handle høyde: 100%; posisjon: absolutt; skjerm: blokk; bakgrunnsfarge: rgb (253, 171, 0); bredde: 5px; topp: 0; venstre: 50%; z-indeks: 3; 

Det er en 5px bred gul bar, kjører høyden på beholderen og plassert i sentrum av visningsporten. Den har en z-indeks av 3 for å sørge for at den sitter på toppen.

Gjør det Flytt

Vi ønsker å ta tak i x-koordinatene til musemarkøren når vi beveger den i visningsporten. Vi vil da flytte håndtaket og sette bredden på topppanelet i henhold til disse koordinatene.

Vi starter med en hendelselytter på foreldreelementet, og deretter angir du venstre stilegenskap til håndtaket som lik den event.clientX verdi.

parent.addEventListener ('mousemove', funksjon (hendelse) // Flytt håndtaket. handle.style.left = event.clientX + 'px';);

Det tar vare på vårt bevegelige håndtak, la oss nå endre størrelsen på panelet, igjen gjøre det lik event.clientX.

parent.addEventListener ('mousemove', funksjon (hendelse) // Flytt håndtaket. handle.style.left = event.clientX + 'px'; // Juster toppbreddets bredde. topPanel.style.width = event.clientX + 'px';);

Vi er ferdige!

Godt gjort for å nå slutten; Med den relativt enkle CSS og JavaScript har vi opprettet en strålende skjermmaskeffekt på skjermen. For å ta det videre, som jeg gjør i videoen, kan vi skjære håndtaket også - se demoen på CodePen for å se hvordan det er oppnådd!