Koristeći osnovne koncepte HTML-a, CSS-a i JS-a, imat ćete atraktivnu vremensku traku koja će se pokrenuti u tren oka.
Ključni zahvati
- Moćnu vremensku traku lako je izgraditi pomoću CSS-a i JavaScripta.
- Započnite ocrtavanjem HTML strukture vremenske trake i oblikovanjem elemenata vremenske trake pomoću CSS-a.
- Nastavite dodavati animaciju vremenskoj traci pomoću JavaScripta. Možete koristiti Intersection Observer API za izbljeđivanje stavki vremenske trake pri pomicanju.
Vremenske trake moćni su vizualni alati koji korisnicima pomažu u kretanju i razumijevanju kronoloških događaja. Istražite kako stvoriti interaktivnu vremensku traku koristeći dinamički duo CSS-a i JavaScripta.
Izgradnja strukture vremenske trake
Možete provjeriti cijeli kod za ovaj projekt na GitHub spremište.
Za početak ocrtajte HTML strukturu u index.html. Stvorite događaje i datume kao zasebne komponente, postavljajući temelj za interaktivnu vremensku traku.
<body>
<sectionclass="timeline-section">
<divclass="container">
<divclass="Timeline__header">
<h2>Timelineh2><pclass="heading--title">
Here is the breakdown of the time we anticipate <br />
using for the upcoming event.
p>
div>
<divclass="Timeline__content">
<divclass="Timeline__item">
<divclass="Timeline__text">
<h3>Occasion 1h3>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Corporis, explicabo.
p>
<spanclass="circle">1span>
div>
<h3class="Timeline__date">12 Dec. 2023h3>
div>
<divclass="Timeline__item">
<divclass="Timeline__text">
<h3>Occasion 2h3>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Corporis, explicabo.
p>
<spanclass="circle">2span>
div>
<h3class="Timeline__date">12 Dec. 2023h3>
div>
div>
div>
section>
body>
U ovom trenutku vaša komponenta izgleda ovako:
Odaberite raspored za svoju vremensku traku: okomito vs. Horizontalno
Prilikom dizajniranja interaktivne vremenske trake možete odabrati okomiti ili vodoravni stil. Vertikalne vremenske crte jednostavne su za korištenje, posebno na telefonima, jer je to uobičajeni smjer u kojem se pomiču web stranice. Ako vaša vremenska traka ima mnogo sadržaja, ovo će vjerojatno biti najprikladniji izgled.
Horizontalne vremenske crte, međutim, privlačne su na širokim zaslonima i izvrsne su za kreativne stranice s manje detalja, koje mogu minimizirati pomicanje s jedne na drugu stranu. Svaki stil ima svoje pogodnosti, prikladne za različite vrste web stranica i korisničkih iskustava.
Stilizirajte vremensku traku pomoću CSS-a
Postoje tri vrste vizualnih elemenata koje ćete stilizirati za vremensku crtu: linije, čvorovi i oznake datuma.
-
Linije: Središnja okomita crta, stvorena pomoću Timeline__content:: nakon pseudoelementa, služi kao okosnica vremenske trake. Stiliziran je specifičnom širinom i bojom, postavljen tako da je potpuno poravnat sa središtem stavki vremenske trake.
.Timeline__content::after {
background-color: var(--clr-purple);
content: "";
position: absolute;
left: calc(50% - 2px);
width: 0.4rem;
height: 97%;
z-index: -5;
} -
Čvorovi: Krugovi, oblikovani pomoću klase kruga, djeluju kao čvorovi na vremenskoj traci. One su apsolutno postavljene u središte svake stavke vremenske trake i vizualno se razlikuju bojom pozadine, tvoreći ključne točke duž vremenske trake.
.circle {
position: absolute;
background: var(--clr-purple);
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 6.8rem;
width: 100%;
aspect-ratio: 1/ 1;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
z-index: 3;
font-size: 1.6rem;
} -
Oznake datuma: Datumi, oblikovani pomoću klase Timeline__date, prikazuju se s obje strane vremenske trake. Njihovo pozicioniranje se izmjenjuje između lijeve i desne strane za svaku stavku vremenske trake, stvarajući raspoređen, uravnotežen izgled duž vremenske trake.
.Timeline__text,
.Timeline__date { width: 50%; }
.Timeline__item:nth-child(even) { flex-direction: row-reverse;}.Timeline_item:nth-child(even).Timeline_date {
text-align: right;
padding-right: 8.3rem;
}.Timeline_item:nth-child(even).Timeline_text { padding-left: 8.3rem;}
.Timeline_item:nth-child(odd).Timeline_text {
text-align: right;
align-items: flex-end;
padding-right: 8.3rem;
}.Timeline_item:nth-child(odd).Timeline_date { padding-left: 8.3rem;}
Provjerite cijeli niz stilova iz GitHub repo in stil.css.
Nakon oblikovanja, vaša bi komponenta trebala izgledati ovako:
Animiranje s JavaScriptom
Da biste animirali ovu komponentu, koristite Intersection Observer API za animiranje stavki vremenske trake pri pomicanju. Dodajte sljedeći kod u skripta.js.
1. Početno postavljanje
Prvo odaberite sve elemente s klasom Timeline__item.
const timelineItems = document.querySelectorAll(".Timeline__item");
2. Početno oblikovanje stavki vremenske trake
Postavite početnu neprozirnost svake stavke na 0 (nevidljivo) i primijenite a CSS prijelaz za glatko blijeđenje.
timelineItems.forEach((item) => {
item.style.opacity = 0;
item.style.transition = "opacity 0.6s ease-out";
}
Možete postaviti ove stilove u listu stilova, ali bilo bi opasno. Ako se JavaScript ne uspije pokrenuti, taj bi pristup vašu vremensku crtu ostavio nevidljivom! Izoliranje ovog ponašanja u JavaScript datoteci dobar je primjer progresivno poboljšanje.
3. Povratni poziv promatrača raskrižja
Definirajte funkciju fadeInOnScroll za promjenu neprozirnosti stavki na 1 (vidljive) kada se sijeku s okvirom za prikaz.
const fadeInOnScroll = (entries, observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.style.opacity = 1;
}
});
};
4. Opcije promatrača raskrižja
Postavite opcije za promatrača, s pragom od 0,1 koji označava da se animacija pokreće kada je vidljivo 10% stavke.
const options = {
root: null,
rootMargin: "0px",
threshold: 0.1,
}
5. Stvaranje i korištenje Intersection Observer
Završite stvaranjem IntersectionObservera s ovim opcijama i njegovom primjenom na svaku stavku vremenske trake.
const observer = new IntersectionObserver(fadeInOnScroll, options);
timelineItems.forEach((item) => {
observer.observe(item);
});
Konačni rezultat trebao bi izgledati ovako:
Najbolji primjeri iz prakse komponente vremenske trake
Neke prakse kojih se treba pridržavati uključuju:
- Optimizirajte svoju vremensku traku za različite veličine zaslona. Naučite tehnike responzivnog dizajna kako biste osigurali besprijekorno korisničko iskustvo na svim uređajima.
- Koristite učinkovite postupke kodiranja kako biste osigurali glatke animacije.
- Koristite semantički HTML, odgovarajuće omjere kontrasta i ARIA oznake za bolju pristupačnost.
Oživljavanje vaše vremenske trake: putovanje u web dizajn
Izgradnja interaktivne vremenske trake nije samo predstavljanje informacija; radi se o stvaranju zanimljivog i informativnog iskustva. Kombiniranjem HTML strukture, CSS stila i JavaScript animacija, možete izraditi vremensku traku koja osvaja vašu publiku dok isporučuje vrijedan sadržaj.