Kelių modulių kūrimas naudojant galerijos svetainės naršymą

Kelių modulių kūrimas naudojant galerijos svetainės naršymą
Kelių modulių kūrimas naudojant galerijos svetainės naršymą

Vaizdų galerijos tobulinimas naudojant interaktyvius modulius

Vizualiai patraukli vaizdų galerija yra būtina šiuolaikinėms svetainėms, tačiau užtikrinti sklandų funkcionalumą naudojant modalus gali būti sudėtinga. Jei stengiatės įdiegti kelis savo galerijos darbo būdus, nesate vieni. Daugelis kūrėjų susiduria su problemomis, kai jų modalai neatsidaro tinkamai arba prieštarauja vienas kitam.

Modalų naudojimas ne tik leidžia lankytojams peržiūrėti vaizdus didesniu formatu, bet ir pagerina vartotojo patirtį. Pridedama naršymo rodyklės, panašus į platformas, tokias kaip „Facebook“ ar „Messenger“, dar labiau pagerina naudojimą, leisdamas vartotojams sklandžiai naršyti vaizdus kiekvieną kartą neuždarius modalo.

Šiame straipsnyje išnagrinėsime, kaip integruoti kelis modalus į HTML, CSS ir JavaScript sąranką. Taip pat sužinosite, kaip naudoti paprastas rodykles, kad būtų sukurta sklandi naršymo patirtis. Net jei bandėte kitus sprendimus, kurie neveikė, šis metodas turėtų pasiūlyti patikimą metodą šiems iššūkiams spręsti.

Pasinerkime į žingsnis po žingsnio sprendimas, užtikrinant, kad kiekvienas vaizdas jūsų galerijoje būtų atidarytas atskirai su naršymo rodyklėmis į kairę ir į dešinę. Atlikę tik keletą patobulinimų, galite pakelti savo galerijos naudotojo patirtį į kitą lygį.

komandą Naudojimo pavyzdys ir paaiškinimas
querySelectorAll() Ši komanda parenka visus elementus, atitinkančius nurodytą CSS parinkiklį. Scenarijuje jis naudojamas patraukti visus galerijos vaizdus, ​​kad kiekvienas spustelėjus galėtų suaktyvinti modalą.
addEventListener() Į elementą registruoja įvykių tvarkyklę. Čia jis naudojamas klausytis vaizdų ir naršymo rodyklių paspaudimų įvykių, užtikrinant tinkamą modalinio ir vaizdo perėjimų funkcionalumą.
classList.add() Dinamiškai prideda CSS klasę prie elemento. Nors pavyzdyje nėra aiškiai parodytas, šis metodas gali būti naudingas norint parodyti arba paslėpti modalus perjungiant klases.
DOMContentLoaded Įvykis, kuris suaktyvinamas, kai pradinis HTML dokumentas yra visiškai įkeltas ir išanalizuotas. Tai užtikrina, kad „JavaScript“ kodas būtų vykdomas tik tada, kai visi elementai bus pasiekiami DOM.
modulus (%) operator Naudojamas likusiai dalybos daliai apskaičiuoti. Tai padeda sukurti ciklinę naršymą, kai naršoma tarp vaizdų (pvz., pereinant nuo paskutinio iki pirmojo vaizdo), apvyniojant rodyklę.
style.display Manipuliuoja elemento CSS rodymo ypatybe per „JavaScript“. Modaliniame scenarijuje jis naudojamas norint parodyti arba paslėpti modalą, kai vaizdas spustelėjamas arba uždaromas.
this Nurodo esamą objektą metodo viduje. Taikant modulinį „JavaScript“ metodą, jis naudojamas „GalleryModal“ klasės kontekstui palaikyti, kai pasiekiamos jos savybės ir metodai.
forEach() Iteruoja kiekvieną masyvo arba NodeList elementą. Ši komanda naudojama norint dinamiškai pridėti paspaudimų įvykius prie visų galerijos vaizdų.
new Sukuria naują objekto ar klasės egzempliorių. Antrajame sprendime nauja komanda GalleryModal(images) inicijuoja galerijos modalinę funkciją.
transform: translateY() CSS ypatybė, naudojama naršymo rodyklėms vertikaliai sulygiuoti. Tai užtikrina, kad rodyklės būtų centruotos net tada, kai dinamiškai keičiasi turinio aukštis.

Kaip modaliniai scenarijai pagerina jūsų galerijos svetainę

Modalinis funkcionalumas, įdiegtas pateiktame kode, užtikrina, kad vartotojai galėtų spustelėti bet kurį vaizdą ir peržiūrėti jį išplėstiniame, izoliuotame rodinyje neišeidami iš galerijos puslapio. Kiekvienas vaizdas galerijoje suaktyvina a modalinis, kuriame vaizdas rodomas viso dydžio kartu su naršymo rodyklėmis, kad būtų galima perjungti kitus vaizdus. Šis požiūris sustiprina vartotojo patirtį leidžiant lankytojams sklandžiai naršyti po visą galeriją pačiame modale, panašiai kaip socialinės žiniasklaidos platformose.

Pagrindinis šios funkcijos elementas yra JavaScript naudojimas renginio klausytojai. Kiekvienam vaizdui priskiriamas paspaudimo įvykis, kuris atidaro modalą ir dinamiškai atnaujina turinį pagal spustelėtą vaizdą. Antrajame sprendime naudojamas modulinis metodas sukuria keičiamo dydžio sistemą, įtraukdamas modalinį elgesį į klasę. Tai užtikrina, kad kodą būtų lengva prižiūrėti ir išplėsti, jei galerija ar jos funkcijos ateityje plės.

Modalo naršymas valdomas naudojant dvi rodykles – „kitas“ ir „ankstesnis“. Šios rodyklės naudoja „JavaScript“, kad atnaujintų rodomą vaizdą, padidinant arba sumažinant dabartinį indeksą su modulio operatorius užtikrinant, kad vaizdų rodyklė apvyniotų, kai pasiekiama galerijos pabaiga arba pradžia. Tai neleidžia vartotojui patekti į aklavietę naršymo metu ir užtikrina nuolatinį naršymą.

Naudojimas CSS Modalo ir rodyklių stilius užtikrina, kad dizainas būtų jautrus ir atitiktų šiuolaikinius žiniatinklio standartus. Modalas išlieka centre, nepaisant ekrano dydžio, o rodyklės sulygiuotos vertikaliai naudojant išverstiY() nuosavybė. Tai garantuoja, kad sąsaja išliks estetiška ir paprasta naudoti įvairiuose įrenginiuose. Visa struktūra, nuo HTML išdėstymo iki modulinės JavaScript klasės, užtikrina tvirtą, prižiūrimą ir patogią vartotojui galerijų sistemą.

1 sprendimas: pagrindinis HTML, CSS ir JavaScript modalas su rodyklėmis

Šis sprendimas demonstruoja tik front-end metodą, naudojant HTML, CSS ir vanilla JavaScript navigacijos modalams.

// HTML structure for each modal
<div class="modal" id="modal1">
  <span class="close" onclick="closeModal()">&times;</span>
  <img class="modal-content" id="img01">
  <div class="caption"></div>
  <div class="nav left" onclick="prevImage()">❮</div>
  <div class="nav right" onclick="nextImage()">❯</div>
</div>
// JavaScript to handle modal behavior
let currentImage = 0;
const images = document.querySelectorAll('.galleryimg');
const modal = document.getElementById('modal1');
const modalImg = document.getElementById('img01');
images.forEach((img, index) => {
  img.onclick = () => {
    openModal(index);
  };
});
function openModal(index) {
  currentImage = index;
  modal.style.display = "block";
  modalImg.src = images[index].src;
}
function closeModal() {
  modal.style.display = "none";
}
function nextImage() {
  currentImage = (currentImage + 1) % images.length;
  modalImg.src = images[currentImage].src;
}
function prevImage() {
  currentImage = (currentImage - 1 + images.length) % images.length;
  modalImg.src = images[currentImage].src;
}
// CSS for modal styling
.modal {
  display: none;
  position: fixed;
  z-index: 1;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.8);
}
.modal-content {
  margin: auto;
  display: block;
  width: 80%;
}
.nav {
  cursor: pointer;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

2 sprendimas: modulinis JavaScript metodas su įvykių delegavimu

Šis metodas naudoja modulines JavaScript funkcijas, kad pagerintų mastelį ir priežiūrą.

// Modular JavaScript setup for gallery modal
class GalleryModal {
  constructor(images) {
    this.images = images;
    this.currentImage = 0;
    this.modal = document.querySelector('.modal');
    this.modalImg = this.modal.querySelector('.modal-content');
    this.attachEventListeners();
  }
  attachEventListeners() {
    this.images.forEach((img, index) => {
      img.addEventListener('click', () => this.open(index));
    });
    this.modal.querySelector('.left').addEventListener('click', () => this.prev());
    this.modal.querySelector('.right').addEventListener('click', () => this.next());
  }
  open(index) {
    this.currentImage = index;
    this.modal.style.display = 'block';
    this.modalImg.src = this.images[index].src;
  }
  next() {
    this.currentImage = (this.currentImage + 1) % this.images.length;
    this.modalImg.src = this.images[this.currentImage].src;
  }
  prev() {
    this.currentImage = (this.currentImage - 1 + this.images.length) % this.images.length;
    this.modalImg.src = this.images[this.currentImage].src;
  }
}
// Initialize the modal functionality
document.addEventListener('DOMContentLoaded', () => {
  const images = document.querySelectorAll('.galleryimg');
  new GalleryModal(images);
});
// Additional CSS Styling
.modal {
  display: none;
  position: fixed;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.8);
  justify-content: center;
  align-items: center;
}

Galerijos modulių tobulinimas naudojant pritaikymo neįgaliesiems ir naudojimo ypatybes

Be kelių kūrimo modalai su navigacija, dar vienas esminis aspektas, į kurį reikia atsižvelgti, yra pasiekiamumo gerinimas. Įsitikinę, kad galerija yra prieinama naudotojams su negalia, jūsų svetainė bus įtraukta. Tai galima pasiekti pridedant atitinkamus ARIA atributus prie HTML elementų ir užtikrinant, kad visi vaizdai būtų prasmingi alt tekstą. Čia pateikiami ekrano skaitytuvų aprašai, todėl turinį gali skaityti silpnaregiai naudotojai.

Kitas svarbus naudojimosi veiksnys yra užtikrinti, kad vartotojai galėtų naršyti modaluose ir klaviatūra, ir pele. Tai galite pasiekti klausydami konkrečių klaviatūros įvykių, tokių kaip Pabėgti klavišą, kad uždarytumėte modalą, ir rodyklių klavišus, kad galėtumėte naršyti vaizdus. Įdiegę šias funkcijas pagerinsite galerijos funkcionalumą, todėl vartotojams bus pasiūlyta daug būdų su ja bendrauti. Be to, jautrus dizainas yra būtinas siekiant užtikrinti, kad modalai gerai atrodytų visų dydžių ekranuose – nuo ​​mobiliųjų telefonų iki didelių monitorių.

Galiausiai vaizdo įkėlimo optimizavimas gali labai paveikti jūsų galerijos našumą. Tingūs įkėlimo būdai, pavyzdžiui, pridėjimas kraunamas = tinginys atributą vaizdams, leisti juos įkelti tik tada, kai jie matomi vartotojui. Tai apsaugo nuo nereikalingo duomenų naudojimo ir pagreitina pradinį puslapio įkėlimą. Kartu su JavaScriptpagrįsti modalai, šie optimizavimai užtikrina sklandžią ir reaguojančią vartotojo patirtį įvairiuose įrenginiuose ir tinklo sąlygomis.

Dažni klausimai apie modalų diegimą naudojant „JavaScript“.

  1. Kaip suaktyvinti modalą naudojant „JavaScript“?
  2. Galite naudoti addEventListener('click') Norėdami atidaryti modalą spustelėjus vaizdą.
  3. Kaip galiu uždaryti modalą naudojant klaviatūrą?
  4. Klausykitės keydown įvykį ir patikrinkite, ar key === 'Escape' uždaryti modalą.
  5. Koks yra lengviausias būdas įdiegti kito ir ankstesnio vaizdo naršymą?
  6. Naudokite modulus (%) norėdami peržiūrėti vaizdus nepatekdami į sąrašo pabaigą.
  7. Kaip užtikrinti, kad modalas veiktų mobiliuosiuose įrenginiuose?
  8. Naudokite media queries CSS ir išbandykite dizainą skirtingų dydžių ekranuose.
  9. Kas yra tingus įkėlimas ir kaip tai įgyvendinti?
  10. Pridėti loading="lazy" į tavo img žymas, kad atidėtų vaizdų įkėlimą, kol jie bus peržiūros srityje.

Baigimas paskutinėmis mintimis

Funkcinis įgyvendinimas modalai galerijoje yra labai svarbus siekiant pagerinti vartotojų sąveiką. Pridėjus funkcijas, pvz., rodyklėmis pagrįstą naršymą ir klaviatūros palaikymą, galerija bus patogi ir pasiekiama keliuose įrenginiuose. Šie elementai leidžia vartotojams efektyviai naršyti vaizdus.

Norint išlaikyti galerijos našumą, reikėtų naudoti optimizavimo metodus, pvz., tingų įkėlimą. Gerai struktūrizuotas derinys JavaScript ir CSS leidžia sklandžiai pereiti ir mėgautis patrauklia patirtimi. Geriausios praktikos pavyzdžiai užtikrina, kad galerija bus jautri, prieinama ir lengvai plečiama atnaujinant.

Kelių modalų kūrimo šaltiniai ir nuorodos
  1. Išsami dokumentacija apie įgyvendinimą modalai ir vartotojo sąveikų tvarkymą naudojant „JavaScript“ rasite adresu MDN žiniatinklio dokumentai .
  2. Reaktyvūs dizaino metodai, skirti optimizuoti galerijos išdėstymą, buvo nurodyti iš CSS gudrybės . Šiame vadove pateikiamos praktinės šiuolaikinės CSS praktikos įžvalgos.
  3. Tingaus vaizdų įkėlimo koncepcija, siekiant pagerinti našumą, paaiškinta adresu Web.dev , „Google“ sukurta platforma, skirta dalytis geriausia žiniatinklio kūrimo praktika.
  4. Navigacijos koncepcijos ir naudotojo patirties įžvalgos, įkvėptos UX dizainas , numatė besiūlių rodyklių diegimo modalinėje galerijoje kryptį.
  5. Norėdami geriau suprasti įvykių tvarkymą „JavaScript“, skaitykite šį straipsnį JavaScript.info buvo labai informatyvus.