Vairāku moduļu izveide ar navigāciju galerijas vietnei

Vairāku moduļu izveide ar navigāciju galerijas vietnei
Vairāku moduļu izveide ar navigāciju galerijas vietnei

Uzlabojiet savu attēlu galeriju ar interaktīviem modāļiem

Vizuāli saistoša attēlu galerija ir būtiska modernām vietnēm, taču vienmērīgas funkcionalitātes nodrošināšana ar modāliem var būt sarežģīta. Ja jums ir grūtības savā galerijā ieviest vairākus darba veidus, jūs neesat viens. Daudzi izstrādātāji saskaras ar problēmām, kuru dēļ viņu modāļi netiek atvērti pareizi vai konfliktē viens ar otru.

Modālu izmantošana ne tikai ļauj apmeklētājiem skatīt attēlus lielākā formātā, bet arī uzlabo lietotāja pieredzi. Pievienošana navigācijas bultiņas, līdzīgi platformām, piemēram, Facebook vai Messenger, vēl vairāk uzlabo lietojamību, ļaujot lietotājiem netraucēti pārlūkot attēlus, katru reizi neaizverot modālu.

Šajā rakstā mēs izpētīsim, kā HTML, CSS un JavaScript iestatījumos integrēt vairākus modālus. Jūs arī uzzināsit, kā izmantot vienkāršas bultiņas, lai radītu netraucētu navigācijas pieredzi. Pat ja esat mēģinājis citus risinājumus, kas nedarbojās, tālāk norādītajai pieejai vajadzētu piedāvāt uzticamu metodi šo problēmu risināšanai.

Iedziļināsimies soli pa solim risinājums, nodrošinot, ka katrs attēls jūsu galerijā tiek atvērts savā veidā ar kreiso un labo navigācijas bultiņām. Veicot tikai dažus uzlabojumus, varat pacelt galerijas lietotāja pieredzi jaunā līmenī.

Pavēli Lietošanas piemērs un skaidrojums
querySelectorAll() Šī komanda atlasa visus elementus, kas atbilst konkrētajam CSS atlasītājam. Skriptā tas tiek izmantots, lai satvertu visus galerijas attēlus, lai katrs no tiem, noklikšķinot, varētu aktivizēt modālu.
addEventListener() Reģistrē elementam notikumu apdarinātāju. Šeit tas tiek izmantots, lai noklausītos klikšķu notikumus uz attēliem un navigācijas bultiņām, nodrošinot pareizu modālo un attēlu pāreju funkcionalitāti.
classList.add() Dinamiski pievieno elementam CSS klasi. Lai gan piemērā tā nav skaidri parādīta, šī metode var būt noderīga, lai parādītu vai paslēptu modāļus, pārslēdzot klases.
DOMContentLoaded Notikums, kas tiek aktivizēts, kad sākotnējais HTML dokuments ir pilnībā ielādēts un parsēts. Tas nodrošina, ka JavaScript kods tiek izpildīts tikai pēc tam, kad visi elementi ir pieejami DOM.
modulus (%) operator Izmanto, lai aprēķinātu atlikušo dalījuma daļu. Tas palīdz izveidot ciklisku navigāciju, iekļaujot indeksu, pārvietojoties starp attēliem (piemēram, pārejot no pēdējā uz pirmo attēlu).
style.display Manipulē ar elementa CSS displeja rekvizītu, izmantojot JavaScript. Modālā skriptā to izmanto, lai parādītu vai paslēptu modālu, kad tiek noklikšķināts uz attēla vai tas tiek aizvērts.
this Attiecas uz pašreizējo objektu metodes ietvaros. Modulārajā JavaScript pieejā to izmanto, lai uzturētu GalleryModal klases kontekstu, piekļūstot tās rekvizītiem un metodēm.
forEach() Atkārtojas pār katru masīva vai NodeList elementu. Šo komandu izmanto, lai dinamiski pievienotu klikšķu notikumus visiem galerijas attēliem.
new Izveido jaunu objekta vai klases gadījumu. Otrajā risinājumā jaunā GalleryModal(images) komanda inicializē galerijas modālo funkcionalitāti.
transform: translateY() CSS rekvizīts, ko izmanto navigācijas bultiņu vertikālai līdzināšanai. Tas nodrošina, ka bultiņas ir centrētas pat tad, ja satura augstums dinamiski mainās.

Kā modālie skripti uzlabo jūsu galerijas vietni

Piedāvātajā kodā ieviestā modālā funkcionalitāte nodrošina, ka lietotāji var noklikšķināt uz jebkura attēla un skatīt to izvērstā, izolētā skatā, neizejot no galerijas lapas. Katrs attēls galerijā aktivizē a modāls, kas parāda attēlu pilnā izmērā kopā ar navigācijas bultiņām, lai pārslēgtos starp citiem attēliem. Šī pieeja uzlabo lietotāja pieredze ļaujot apmeklētājiem nemanāmi pārlūkot visu galeriju pašā modālā, līdzīgi kā sociālo mediju platformās.

Šīs funkcionalitātes galvenais elements ir JavaScript izmantošana pasākuma klausītāji. Katram attēlam tiek piešķirts klikšķa notikums, kas atver modālu un dinamiski atjaunina saturu, pamatojoties uz noklikšķināto attēlu. Otrajā risinājumā izmantotā modulārā pieeja rada mērogojamu sistēmu, iekapsulējot modālo uzvedību klasē. Tas nodrošina, ka kodu ir viegli uzturēt un paplašināt, ja galerija vai tās funkcionalitāte nākotnē palielināsies.

Navigācija modālā tiek kontrolēta, izmantojot divas bultiņas — "nākamais" un "iepriekšējais". Šīs bultiņas izmanto JavaScript, lai atjauninātu parādīto attēlu, palielinot vai samazinot pašreizējo indeksu, izmantojot moduļa operators nodrošinot, ka attēla rādītājs tiek apvilkts, sasniedzot galerijas beigas vai sākumu. Tas neļauj lietotājam nonākt strupceļā navigācijas laikā un nodrošina nepārtrauktu pārlūkošanas pieredzi.

Izmantošana CSS modāla un bultiņu stils nodrošina, ka dizains ir atsaucīgs un atbilst mūsdienu tīmekļa standartiem. Modāls paliek centrēts neatkarīgi no ekrāna izmēra, un bultiņas tiek izlīdzinātas vertikāli, izmantojot tulkotY() īpašums. Tas garantē, ka interfeiss joprojām ir estētiski pievilcīgs un viegli lietojams dažādās ierīcēs. Visa struktūra, sākot no HTML izkārtojuma līdz modulārajai JavaScript klasei, nodrošina stabilu, uzturējamu un lietotājam draudzīgu galeriju sistēmu.

1. risinājums: pamata HTML, CSS un JavaScript modāls ar bultiņām

Šis risinājums demonstrē tikai priekšgala pieeju, izmantojot HTML, CSS un vaniļas JavaScript navigācijas modāļiem.

// 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. risinājums: modulāra JavaScript pieeja ar notikumu deleģēšanu

Šī pieeja izmanto modulāras JavaScript funkcijas, lai uzlabotu mērogojamību un apkopi.

// 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;
}

Galerijas moduļu uzlabošana ar pieejamības un lietojamības funkcijām

Ne tikai izveidot vairākus modāļi ar navigāciju, vēl viens svarīgs aspekts, kas jāņem vērā, ir pieejamības uzlabošana. Pārliecinoties, ka galerija ir pieejama lietotājiem ar invaliditāti, tiek nodrošināts, ka jūsu vietne ir iekļaujoša. To var panākt, pievienojot atbilstošus ARIA atribūtus HTML elementiem un nodrošinot, ka visi attēli satur jēgpilnu saturu alt tekstu. Tas nodrošina ekrāna lasītāju aprakstus, padarot saturu lasāmu lietotājiem ar redzes traucējumiem.

Vēl viens svarīgs lietojamības faktors ir nodrošināt, ka lietotāji var pārvietoties pa modāliem gan ar tastatūru, gan peli. To var panākt, klausoties konkrētus tastatūras notikumus, piemēram, Bēgt taustiņu, lai aizvērtu modālo un bulttaustiņus attēlu navigācijai. Šo funkciju ieviešana uzlabos galerijas funkcionalitāti, piedāvājot lietotājiem vairākus veidus, kā ar to mijiedarboties. Turklāt atsaucīgs dizains ir būtisks, lai nodrošinātu, ka modāļi labi izskatās visu izmēru ekrānos, sākot no mobilajiem tālruņiem līdz lieliem monitoriem.

Visbeidzot, attēlu ielādes optimizēšana var būtiski ietekmēt jūsu galerijas veiktspēju. Slinkas ielādes metodes, piemēram, pievienošana ielādēšana = "slinks" atribūtu attēliem, ļauj tos ielādēt tikai tad, kad tie ir redzami lietotājam. Tas novērš nevajadzīgu datu patēriņu un paātrina sākotnējo lapas ielādi. Apvienojumā ar JavaScriptŠīs optimizācijas nodrošina vienmērīgu un atsaucīgu lietotāja pieredzi dažādās ierīcēs un tīkla apstākļos.

Bieži uzdotie jautājumi par moduļu ieviešanu ar JavaScript

  1. Kā aktivizēt modālu, izmantojot JavaScript?
  2. Jūs varat izmantot addEventListener('click') lai atvērtu modālu, kad tiek noklikšķināts uz attēla.
  3. Kā es varu aizvērt modālu, izmantojot tastatūru?
  4. Klausieties keydown notikumu un pārbaudiet, vai key === 'Escape' lai aizvērtu modālu.
  5. Kā visvieglāk ieviest nākamo un iepriekšējo attēlu navigāciju?
  6. Izmantot modulus (%) lai pārvietotos pa attēliem, nenokļūstot saraksta beigās.
  7. Kā nodrošināt modāla darbību mobilajās ierīcēs?
  8. Izmantot media queries CSS un pārbaudiet dizainu uz dažādu izmēru ekrāniem.
  9. Kas ir slinka ielāde, un kā to ieviest?
  10. Pievienot loading="lazy" uz jūsu img tagus, lai atliktu attēlu ielādi, līdz tie atrodas skata logā.

Nobeigums ar pēdējām domām

Funkcionālā ieviešana modāļi galerijā ir ļoti svarīgi, lai uzlabotu lietotāju mijiedarbību. Pievienojot tādas funkcijas kā uz bultiņām balstīta navigācija un tastatūras atbalsts, galerija ir lietotājam draudzīga un pieejama vairākās ierīcēs. Šie elementi ļauj lietotājiem efektīvi pārlūkot attēlus.

Lai saglabātu galerijas veiktspēju, ir jāizmanto optimizācijas paņēmieni, piemēram, slinka ielāde. Labi strukturēta kombinācija JavaScript un CSS nodrošina vienmērīgas pārejas un aizraujošu pieredzi. Paraugprakses ievērošana nodrošina, ka galerija ir atsaucīga, pieejama un viegli paplašināma ar turpmākiem atjauninājumiem.

Avoti un atsauces vairāku moduļu veidošanai
  1. Detalizēta dokumentācija par ieviešanu modāļi un lietotāja mijiedarbības apstrādi, izmantojot JavaScript, var atrast vietnē MDN tīmekļa dokumenti .
  2. Atsauces uz atsaucīgiem dizaina paņēmieniem galeriju izkārtojumu optimizēšanai tika sniegtas no CSS triki . Šī rokasgrāmata sniedz praktisku ieskatu mūsdienu CSS praksē.
  3. Slinkas attēlu ielādes jēdziens, lai uzlabotu veiktspēju, ir izskaidrots vietnē Web.dev , Google izveidota platforma, lai dalītos ar labāko tīmekļa izstrādes praksi.
  4. Navigācijas koncepcijas un lietotāja pieredzes ieskati, iedvesmojoties no UX dizains , sniedza virzienu bezšuvju bultu ieviešanai modālajā galerijā.
  5. Lai iegūtu dziļāku izpratni par notikumu apstrādi JavaScript, šis raksts no JavaScript.info bija ļoti informatīvs.