Luo edistyneitä CSS-karuselleja ilman JavaScriptiä

Viimeisin päivitys: 05/24/2026
Kirjoittaja: C SourceTrail
  • Moderni CSS:n vieritystoiminto muuttaa yksinkertaiset vierityspalkit sujuviksi, sivutetuiksi karuselleiksi ilman JavaScriptiä.
  • Uudet pseudoelementit, kuten ::scroll-button() ja ::scroll-marker(), luovat helppokäyttöisiä karuselliohjaimia puhtaassa CSS:ssä.
  • Pelkästään CSS:ään perustuvat strategiat yhdistettynä huolellisiin vararatkaisuihin ja ARIAan tuottavat nopeita, joustavia ja osallistavia karuselleja.
  • JavaScriptistä tulee valinnainen, ja se on varattu reunatapauksille, kuten todelliselle äärettömälle silmukalle tai monimutkaiselle tilakäyttäytymiselle.

CSS-karuselli ilman JavaScriptiä

Karusellien rakentaminen pelkällä modernilla CSS:llä ei ole enää haave—se on erittäin todellinen, tuotantovalmis vaihtoehto, joka usein päihittää klassiset JavaScript-liukusäädinkirjastot. Ominaisuuksien, kuten vierityksen napsauttaminen, vieritysohjatut animaatiot, kokeelliset karusellin pseudoelementit ja vankat esteettömyysalkeiselementitvoit toimittaa kevyitä ja kestäviä karuselleja, jotka tuntuvat silti sulavilta, vuorovaikutteisilta ja viimeistellyiltä.

Jos olet kyllästynyt vetämään 50 kt:n JavaScript-paketteja esille vain muutaman dian näyttämiseksi, tämä opas opastaa sinua nykypäivän CSS:n tarjoamissa palveluissa. Käymme läpi CSS-pohjaisten karusellien keskeiset käsitteet, niiden yhdistämisen vierityspainikkeella ja milloin kannattaa hyödyntää uutta. ::scroll-button() ja ::scroll-marker() näennäiselementtejä ja sitä, miten automaattista toistoa tai ympyränmuotoista toimintaa voidaan lisätä samalla, kun esteettömyyttä ja suorituskykyä kohdellaan ensiluokkaisina.

Miksi CSS-pohjaiset karusellit ovat vihdoin vakava vaihtoehto

Vuosien ajan ”karuselli” oli lähes synonyymi ”JavaScript-laajennukselle”.Ratkaisut, kuten Swiper, Glide tai itse kehitetyt liukusäätimet, olivat ensisijainen lähestymistapa: ne hoitivat navigoinnin, tilan, näppäimistötuen ja kosketusnäytöt, mutta lisäpainon, kaikkialla olevien tapahtumakuuntelijoiden ja melkoisen määrän DOM-voimistelua hinnalla.

Moderni CSS on hiljaisesti umpeuttanut suurimman osan tästä aukostaOminaisuuksilla, kuten scroll-snap-type ja scroll-snap-alignvoit muuttaa minkä tahansa vaaka- tai pystysuuntaisen vierityspalkin sivutetuksi kokemukseksi. Tämän lisäksi CSS Overflow Level 5 -spesifikaatio esittelee selaimen luoman vierityspainikkeet ja merkit jotka toimivat kuin täysin varusteltu karusellikäyttöliittymä, mutta jotka on deklaroitu kokonaan CSS:llä.

Suurin voitto on se, että selaimesta, ei JavaScript-koodistasi, tulee vastuussa ydinkäyttökokemuksesta.: vieritysfysiikka, näppäimistönavigointi, kohdistusjärjestys ja jopa ARIA-roolit karusellin ohjaimille. Monissa tapauksissa on todella vaikeaa rakentaa jotain helppokäyttöisempää ja paremmin toimivaa kuin mitä alusta nyt tarjoaa suoraan paketista.

CSS-karuselleissa on toinen merkittävä etu: joustavuusJos JavaScriptin lataaminen epäonnistuu, käyttäjät, joiden skripti on estetty tai poistettu käytöstä, näkevät silti täysin käyttökelpoisen vieritettävän joukon kohteita. Koodissa ei ole nesteytystä, myöhään latautuvan koodin aiheuttamaa asettelun muutosta ja paljon vähemmän liikkuvia osia, jotka voivat mennä pieleen ajan myötä.

Ydinosa: vieritettävä säilö Scroll Snap -toiminnolla

Jokainen CSS-pohjainen karuselli aloittaa elämänsä tavallisena vieritettävänä säilönäAjattele yksinkertaista luetteloa dioista, joita voidaan vierittää vaakasuunnassa. Lisää sitten vierityksen napsauttaminen, jotta näkymä lukittuu luonnollisesti kuhunkin diaan.

Vaakasuuntaisen karusellin minimaalinen HTML-rakenne on tarkoituksella yksinkertainen.: kääreelementti ja sen sisällä sarja diaelementtejä. Voit käyttää ul li elementtejä tai div lapsen kanssa divs—CSS tekee raskaan työn, joten et tarvitse erityistunteja jokaiselle lapselle, ellei suunnittelusi sitä vaadi.

Yksinkertainen vierityspainikkeen määritys CSS:ssä voisi näyttää tältä, olettaen täysleveän, yhden dian näkymän:

.carousel { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; }
.carousel-item { flex: 0 0 100%; scroll-snap-align: center; }

Tässä säiliö käyttää display: flex asettaa lapsensa vaakasuoraan riviinja overflow-x: auto vierityksen mahdollistamiseksi. Taika piilee scroll-snap-type: x mandatory, joka kertoo selaimelle, että vaakasuuntaisen vierityksen tulisi aina pysähtyä kelvolliseen kohdistuspisteeseen, ja scroll-snap-align: center jokaisella dialla, mikä määrittää kyseiset kohdistuspisteet.

Tämä flexboxin ja scroll snapin yhdistelmä tuntuu heti karusellilta: käyttäjät vierittävät tai pyyhkäisevät, ja lähimpänä oleva dia napsahtaa paikalleen. Koska se hyödyntää natiivia vieritystä, kosketussyöttö puhelimissa ja tableteissa toimii yksinkertaisesti ilman mitään eleiden käsittelijät tai ylimääräisiä kirjastoja.

Et ole rajoitettu yhteen kohteeseen katselukertaa kohdenUseita kortteja samanaikaisesti näyttävissä monisarakkeisissa karuselleissa voit käyttää kohteille joustavaa leveyttä, esimerkiksi:

.carousel-item { flex: 0 0 calc(33.333% - 1rem); margin: 0 0.5rem; scroll-snap-align: center; }

Tämän muunnelman avulla voit näyttää esimerkiksi kolme korttia näyttöaluetta kohden pienellä rivivälillä., mutta hyötyvät silti napsautustoiminnosta. Käyttäjät liukuvat korttisivujen läpi yksittäisten sankaridiojen sijaan, mikä toimii erinomaisesti tuoteluetteloissa tai gallerioissa.

Vierityspainikkeet, joissa on ::scroll-button()-pseudoelementti

Kun sinulla on napsahtava vierityspalkki, seuraavaksi useimmat ihmiset haluavat selkeät navigointipainikkeet.—edellinen ja seuraava -säätimet, jotka siirtävät karusellia vasemmalle tai oikealle. Perinteisesti loit <button> elementtejä, sido klikkaustapahtumat ja laske kuinka pitkälle vieritetään.

CSS Overflow 5 -spesifikaatio esittelee ::scroll-button(), pseudoelementti, jonka avulla selain voi tehdä kaiken raskaan työnVaikka tämä on tällä hetkellä saatavilla Chrome 135:stä alkaen (ja aluksi tyypillisesti kokeellisten lippujen takana), se on kurkistus siihen, miten karuselleja luodaan jatkossa.

Vierityspainikkeet määritetään samalla tavalla kuin minkä tahansa muun pseudoelementin.Esimerkiksi vasemman ja oikean painikkeen luominen karusellillesi:

.carousel::scroll-button(left) { content: "⬅" / "Scroll left"; }
.carousel::scroll-button(right) { content: "⮕" / "Scroll right"; }
.carousel::scroll-button(*) :focus-visible { outline-offset: 5px; }

Kun tätä CSS:ää käytetään, selain luo oikean <button> elementit vieritysastian sisaruksina, kytkee ne vierityspalkkiin, määrittää niille sopivat roolit ja määrittää niiden toiminnan. Yksi napsautus vierittää tyypillisesti noin 85 % vieritysalueesta, mikä tuntuu useimmissa karuselliasetteluissa "sivulta".

Jos suunnittelusi odottaa täsmälleen yhtä täysleveistä kohdetta napsautusta kohden, voit yhdistää nämä pseudoelementit tiukempaan kohdistukseen jokaisella lapsella lisäämällä scroll-snap-stop: alwaysTämä pakottaa näkymän pysähtymään kohteen rajoille sen sijaan, että se pysähtyisi puoliväliin.

Sisältöominaisuudella on tässä kaksinkertainen tehtävä: ensimmäinen arvo on se, mitä käyttäjät näkevät visuaalisesti (tässä tapauksessa nuolimerkkejä), ja toinen merkkijono on esteetön varateksti, joka voidaan näyttää avustavalla teknologialla. Voit muotoilla ja sijoittaa näitä painikkeita CSS:n avulla tai käyttää funktioita, kuten anchor() kohdistaaksesi ne tarkasti asetteluun.

Vieritysmerkit ::scroll-marker():lla ja ::scroll-marker-group:lla

Karusellin alla olevat pisteet tai otsikot – joita usein kutsutaan sivutusmerkeiksi tai merkeiksi – ovat toinen yleinen vaatimus.Ne näyttävät, kuinka monta kohdetta on olemassa ja mikä niistä on tällä hetkellä näkyvissä, ja niiden avulla käyttäjät voivat siirtyä suoraan tiettyyn diaan.

::scroll-marker() pseudo-elementti antaa sinulle nämä indikaattorit ilman ankkurilinkkien tai jänteiden manuaalista luomistaJokainen merkki on pohjimmiltaan navigointi <a> Selaimen luoma elementti, joka osoittaa vastaavaan vierityskohteeseen ja osallistuu näppäimistö- ja näytönlukijan navigointiin.

Voit määrittää tämän kertomalla selaimelle, mihin merkkiryhmä sijoitetaan. scroll-marker-groupja mille elementeille merkit luodaan. Minimikonfiguraatio voisi näyttää tältä:

.carousel { scroll-marker-group: after; }
.carousel > li::scroll-marker { content: " "; }
.carousel > li::scroll-marker:target-current { background: var(--accent); }

Selain rakentaa ::scroll-marker-group säilöä vierityspalkin sisaruksena ja täyttää sen yhdellä merkillä kutakin valittua alitasoa kohdenTässä yksinkertaisessa esimerkissä merkit on piirretty tyhjinä pisteinä, mutta voit yhtä hyvin käyttää tekstiä, kuten ”Kausi 1”, kuvakkeita tai jopa pikkukuvia muuttamalla content omaisuutta.

Mikä tekee näistä merkeistä erityisiä verrattuna tavalliseen vierityspalkkiin on, että ne ovat oikeita navigointilinkkejä. Niiden avulla käyttäjät voivat siirtyä suoraan merkityksellisiin paikkoihin, ja niillä on hyödyllinen semantiikka: on olemassa :target-current tila, joka osoittaa, mikä merkitsijä vastaa parhaillaan näkyvissä olevaa tai kiinnitettyä diaa. Näppäimistötuki toimii kuten kohderyhmä, ja näytönlukijat voivat näyttää ne taulukkotyyppisenä ohjausobjektina.

Tämä strategia on erityisen tehokas silloin, kun vierityspalkki edustaa loogisia osia yksittäisten kohteiden sijaan.Esimerkiksi kymmenen jaksoa kohden luodun kymmenen merkin sijaan voit luoda kaksi merkintää, jotka hyppäävät ensimmäisen ja toisen kauden alkuun. Voit vapaasti päättää, mitkä "kiinnostavat kohdat" ovat käsiteltäviä.

Painikkeiden ja merkkien yhdistäminen täydelliseksi karusellikäyttöliittymäksi

Kun laitat ::scroll-button() ja ::scroll-marker() yhdessä samalla vierityspalkilla, saat käyttöliittymän, jonka käyttäjät tunnistavat välittömästi karuselliksi: edellinen/seuraava-säätimet, rivi merkkejä, jotka osoittavat, kuinka pitkälle dioja on siirrytty, ja sujuva siirtyminen diojen välillä.

Keskeinen ero klassisiin JavaScript-liukusäätimiin on se, että suurin osa tästä logiikasta sijaitsee nyt selaimessa.Painikkeet ja merkit ovat luotuja elementtejä, joilla on oikeat ARIA-roolit, jotka on integroitu oikein välilehtijärjestykseen, ja joiden esteettömyystarina on pohjana olevien selaintiimien suunnittelema sen sijaan, että se olisi keksitty uudelleen jokaiselle sivustolle.

Tämä lähestymistapa tuo useita erittäin käytännöllisiä etujaSe toimii JavaScriptin ollessa poistettu käytöstä, poistaa hydraation välkkymisen ja ajoituksen ongelmat, vähentää kumulatiivista asettelun siirtymää, koska ohjausobjektit ovat tiedossa CSS-asettelun aikana, ja integroituu saumattomasti vierityspohjaisiin animaatioihin tai vieritystilakyselyihin, jos haluat lisätä tyyliä.

Kosketuslaitteilla käyttökokemus on luonnostaan ​​sormiystävällinen koska vierityspalkki on edelleen vain natiivi vierityspalkki. Työpöydillä hiiren rulla ja näppäimistösyöttö toimivat odotetulla tavalla, ja luotujen säätimien kohdistusindikaattoreita voidaan muotoilla vastaamaan suunnittelu- ja esteettömyysohjeitasi.

Kunnossapidon näkökulmasta "tee vähemmän, saavuta enemmän" on melko tarkka kuvaus.Sen sijaan, että ylläpitäisit useiden karusellitoteutusten logiikkaa eri projekteissa, luotat jaettuihin, standardoituihin alustaominaisuuksiin, jotka paranevat ajan myötä ilman ylimääräistä työtä sinun puolellasi.

Scroll Snapin toimiminen oikeissa projekteissa

Vaikka jättäisit uudet pseudoelementit hetkeksi huomiotta, pelkkä scroll-snap riittää jo monille tuotantokaruselleille.Selain tukee vieritysnapsausta moderneissa hakukoneissa vankasti, ja toiminta on ennustettavaa sekä hiiren rullaa että kosketuseleitä käytettäessä.

Yksinkertaisimmassa skenaariossa HTML-karusellisi voi olla div ja sisällä sarja kuviaVoit antaa tuolle säilölle luokan, kuten .carousel ja jättää lapsikuvat luokittelemattomiksi; CSS hoitaa tasauksen ja vierityksen.

Kytkemällä päälle scroll-behavior: smooth säiliön päällä, vieritys kohdistuspisteiden välillä muuttuu miellyttävän animoiduksi nykimisen sijaan. Tämä on erityisen havaittavissa, kun käyttäjät napsauttavat merkkejä tai ankkurilinkkejä tai kun vieritys käynnistetään ohjelmallisesti hybridi-asetuksissa.

Jokaisella näppäimen vierityspainikkeen ominaisuudella on hyvin erillinen rooli. scroll-snap-type määrittelee akselin ja onko napsauttaminen pakollista vai vain vihje; scroll-snap-align lapsilla määrittää, mihin kohtaan kuva lukittuu (alku, keskikohta, loppu); ja scroll-snap-stop: always estää selainta ohittamasta kohdistuspisteitä nopeasti vieritettäessä.

Yhdessä käytettynä nämä ominaisuudet antavat sinun määrittää tarkalleen, miltä karusellin tulisi tuntua.– lempeästä ja anteeksiantavasta napsauttamisesta, joka sopii suurille sisältöosioille, tarkkaan, dia dialta etenevään toimintaan, joka sopii täydellisesti sankaribannereihin, joissa et halua koskaan laskeutua esineiden "väliin".

Koska tämä on puhdasta CSS:ää, voit helposti mukauttaa ulkoasua responsiivisestiMediakyselyillä voit vaihtaa kapeilla näytöillä yhden dian näyttöä kohden useisiin dian näyttöä kohden leveillä työpöydillä yksinkertaisesti muuttamalla flex-basis kohteista. Ei vaadi JavaScript-keskeytyskohtia, koonmuutoskuuntelijoita tai uudelleenlaskettuja leveyksiä.

Kokeelliset pseudoelementit ja ominaisuuksien havaitseminen

Uudet karuselliin perustuvat pseudoelementit—::scroll-button(), ::scroll-marker() ja ::scroll-marker-group—ovat voimakkaita mutta silti suhteellisen tuoreitaKirjoitushetkellä ne ovat saatavilla Chrome 135:ssä ja uudemmissa versioissa, usein kokeellisilla asetuksilla, ja ne otetaan käyttöön myös muissa hakukoneissa ajan myötä.

Koska tuki ei ole vielä yleismaailmallista, tuotantoympäristöjen tulisi luottaa ominaisuuksien tunnistukseen ja toimiviin varajärjestelmiin.CSS antaa sinulle @supports at-rule, jonka avulla voit ehdollisesti soveltaa sääntöjä ominaisuuksien tunnistuksen perusteella.

Voit määrittää yksinkertaisen varanavigointipalkin—joukko linkkejä tai painikkeita, jotka sijaitsevat karusellin alapuolella — ja piilottavat sitten kyseisen kaistaleen, kun selain tukee natiiveja vierityspainikkeita. Esimerkiksi:

.carousel-nav { display: flex; gap: 0.5rem; }
@supports (scroll-button-inline: both) { .carousel-nav { display: none; } }

Tässä .carousel-nav voi sisältää käsin kirjoitettuja ankkurilinkkejä, jotka osoittavat dioihin tunnisteiden kautta, Kuten <a href="#slide1">1</a>Selaimissa, jotka ymmärtävät uuden vierityspainikkeen ominaisuuden, alkuperäiset ohjausobjektit tulevat näkyviin ja varanavigointipalkki piilotetaan. Vanhemmissa selaimissa ankkuripainike pysyy ennallaan ja vierityspainikkeella saat täydellisen käyttökokemuksen.

Tämä hybridistrategia tekee seuraavan sukupolven karuselliominaisuuksien kokeilemisesta turvallista jo tänään, sitomatta itseäsi tiettyyn hakukoneeseen tai lippuasetuksiin. Selainten tuen kehittyessä voit nojata enemmän pseudoelementteihin ja karsia manuaalista rakennelmaa.

Vain CSS:ssä toimivat automaattisesti toistettavat karusellit avainruutuanimaatioilla

Toinen yleinen pyyntö on automaattinen toisto – karuselli, joka etenee itsestään ja pysähtyy halutessaan, kun hiiri viedään sen päälle.Vaikka automaattiseen toistoon liittyy joitakin käyttökokemukseen ja saavutettavuuteen liittyviä rajoituksia, se on mahdollista saavuttaa pelkästään CSS-animaatioilla.

Yksinkertainen malli on animoida diaraidan vaakasuuntainen siirto.

@keyframes slide {
0%, 20% { transform: translateX(0); }
25%, 45% { transform: translateX(-100%); }
50%, 70% { transform: translateX(-200%); }
75%, 95% { transform: translateX(-300%); }
100% { transform: translateX(0); }
}
.autoplay-carousel { display: flex; animation: slide 12s infinite; }
.autoplay-carousel:hover { animation-play-state: paused; }

Tässä esimerkissä avainkehykset viettävät tietyn ajan kussakin siirtymässä ennen siirtymistä seuraavaan diaan.Raita toistuu lopussa takaisin alkuun, jolloin näyttää siltä kuin se toistaisi diaesitystä neljän dian ajan. Hiiren vieminen karusellin päälle pysäyttää animaation, joten käyttäjät voivat tarkastella sisältöä taistelematta jatkuvaa liikettä vastaan.

Kunnioittaakseen käyttäjiä, jotka haluavat vähentää liikkumista terveydellisistä tai mukavuussyistä, voit kääriä animaation mediakyselyyn:

@media (prefers-reduced-motion: reduce) { .autoplay-carousel { animation: none; } }

Tämä varmistaa, että järjestelmissä, joissa vaaditaan liikkeenrajoitusta, liukumäet pysyvät paikallaan, mikä käytännössä poistaa automaattisen toiston käytöstä, mutta sallii silti manuaalisen vierityksen tai painikkeilla/merkeillä navigoinnin, jos se on mahdollista.

Yksi tärkeä kompromissi on, että avainruutuihin perustuva automaattinen toisto ei integroidu automaattiseen vieritysnapsautukseen.Käännät sisältöä manuaalisesti natiivin vierityksen sijaan, joten sinun on suunniteltava animaatio huolellisesti, jotta vältyt puoliksi näkyviltä diailta ja että ajoitus pysyy synkronoituna asettelun kanssa.

CSS-karuselleihin liittyviä esteettömyysnäkökohtia

Saavutettavuus on alue, jolla CSS-pohjaiset karusellit voivat todella loistaa, koska suuri osa raskaasta logiikasta siirtyy mukautetusta koodistasi alustan toimintatapoihin, jotka on huolellisesti suunniteltu ja testattu.

Kun luotat natiiviin vieritykseen ja vieritystoimintoon, saat automaattisesti näppäimistö-, kosketus- ja hiiren tuen.Käyttäjät voivat siirtyä vierityspalkkiin tabulaattorilla, liikkua nuolinäppäimillä, pyyhkäistä kosketusnäytöillä ja vierittää rullalla ilman tapahtumakuuntelijoita tai mukautettuja käsittelijöitä.

Kokeelliset vierityspainikkeet ja merkit menevät askeleen pidemmälleSelain luo ne asianmukaisella semantiikalla, integroi ne sarkainjärjestykseen ja ylläpitää niiden tilaa, mikä tekee ARIA-attribuuttien vahingossa unohtamisen tai niiden väärin nimeämisen erittäin vaikeaksi. Tuloksena olevat karuselliohjaimet ovat yleensä johdonmukaisemmin saatavilla kuin kotivalitut toteutukset.

Voit ja sinun pitäisi edelleen lisätä semanttisia vihjeitä karusellialueihisiEsimerkiksi säiliön merkitseminen role="region" ja kuvaileva aria-label auttaa näytönlukijan käyttäjiä ymmärtämään, mitä komponentti edustaa:

<div class="carousel" role="region" aria-label="Product gallery">
<div class="carousel-item" aria-label="Slide 1 of 3">...</div>
</div>

Näkyvien keskittymisindikaattoreiden varmistaminen kaikille interaktiivisille elementeille on edelleen ratkaisevan tärkeääOlivatpa ohjausobjektit sitten omia painikkeitasi ja linkkejäsi tai selaimen luomia näennäiselementtejä, varmista, että kohdistuksen ääriviivoja ei poisteta tai tehdä liian hienovaraisiksi. Säädä outline, outline-offset tai taustan muutoksia tarpeen mukaan kontrastivaatimusten täyttämiseksi.

Kosketuskohteen koko on toinen käytännön seikkaPyri käyttämään vähintään 44 × 44 pikselin kokoisia ohjaimia yleisten esteettömyysohjeiden mukaisesti, jotta käyttäjien ei ole vaikea napauttaa nuolia tai pisteitä pienemmillä näytöillä.

Anna käyttäjille selkeä hallinta kaikissa automaattisen toiston toiminnoissa ja vältä liian aggressiivisia liikkeitäTarjoa taukopainike, joka pysäyttää hiiren osoittimen päällä, tai erillinen taukopainike, ja harkitse automaattisen toiston oletusarvoista pois päältä asettamista, jos sisältö on tiheää tai tekstipainotteista. Yhdessä prefers-reduced-motion, tämä tekee karusellin käytöstä mukavampaa laajemmalle yleisölle.

Pyöreän tai "äärettömän" vierityksen käsittely CSS:llä

Yksi ihmisten usein pyytämä toimintatapa on pyöreä vieritysKun saavutat viimeisen dian ja vierität eteenpäin, palaat sujuvasti takaisin ensimmäiseen, kuin loputtomasti pyörivä fyysinen karuselli.

Nykyään ei ole olemassa suoraa, puhtaasti CSS:n mukaista ominaisuutta, joka tekisi vierityssäiliöstä luonnostaan ​​pyöreän.Ilman sisällön kopiointia natiivilla vierityspalkilla on alku ja loppu: kun olet saavuttanut viimeisen kohteen, vierittäminen ei yksinkertaisesti vie sinua eteenpäin.

Spesifikaatioiden tekijät ovat tietoisia siitä, että monet käyttöliittymäkarusellit odottavat tätä silmukkatoimintaa., ja alustatason ratkaisuihin sykliseen vieritykseen kohdistuu aktiivista kiinnostusta, paljolti samalla tavalla kuin uudet vierityspainikkeet ja -merkit standardoitiin. Tällä hetkellä selainta ei kuitenkaan voi pyytää rivittämään vierityskohtia natiivisti yhdellä CSS-deklaraatiolla.

Puhtaasti CSS-ympäristöissä silmukoiden simulointi tarkoittaa yleensä muunnosten animointia (kuten automaattisen avainruudun toiston esimerkeissä) tai lineaarisen lopun hyväksymistä sekvenssille.Jos saumatonta äärettömyyttä tarvitaan ehdottomasti etkä voi kopioida sisältöä, JavaScript on toistaiseksi joustavampi työkalu.

Hyvä uutinen on, että mikään ei estä sinua yhdistämästä enimmäkseen CSS-pohjaista karusellia pieneen määrään JavaScriptiä, jossa se todella lisää arvoa.Voit luottaa vierityspainikkeisiin ja CSS-painikkeisiin jokapäiväisessä navigoinnissa ja lisätä sitten muutaman rivin skriptiä seurataksesi vierityskohtaa ja hypätäksesi lopusta alkuun tarvittaessa.

HTML/CSS vs. JavaScript monipuolisissa, korttipohjaisissa karuselleissa

Uudempien kehittäjien usein kohtaama pulma on, onko monimutkaisempi korttikaruselli "täytyykö" kirjoittaa JavaScriptillä.Ihmiset usein kuvittelevat, että heti kun siirrytään yksinkertaisista kuvista responsiivisiin kortteihin, joissa on erilaisia ​​komponentteja, pelkkä CSS lakkaa olemasta kannattava.

Käytännössä CSS:n scroll-snap toimii yhtä hyvin sekä rich card- että tavallisten kuvien kohdalla.Niin kauan kuin jokainen kortti on lohko vierityslaatikossa, voit napsauttaa siihen, animoida sen ympärille ja lisätä päälle lisää tyylejä. Otsikot, painikkeet, tekstinpätkät ja jopa upotetut mediatiedostot eivät muuta mekaniikkaa olennaisesti.

JavaScriptin loistavuus piilee ehdollisessa käyttäytymisessä ja kompleksisessa tilassaJos karusellisi on suodatettava kortteja dynaamisesti, järjestettävä dioja uudelleen, synkronoitava muiden komponenttien kanssa, haettava uutta sisältöä lennossa tai tuettava erittäin räätälöityä logiikkaa ("jos tätä pistettä napsautetaan, näytä täysin asiaan liittymätön kortti"), JavaScript voi ilmaista kyseisen liiketoimintalogiikan helpommin kuin pelkkä CSS.

Yllättävän moni arkipäivän liukusäädin on kuitenkin pohjimmiltaan staattisia luetteloita kohteista, jotka etenevät lineaarisesti.Näissä tapauksissa muutaman rivin CSS:n käyttäminen suuren JS-kirjaston tuomisen sijaan on sekä yksinkertaisempaa että suorituskyvyn kannalta parempi. Scroll-snapin ja uudempien pseudoelementtien ymmärtäminen antaa sinulle mahdollisuuden varata JavaScriptin niille harvinaisille tapauksille, joissa se todella kannattaa.

Jos vielä opettelet käyttöliittymäsuunnittelua, CSS-karusellien pitäminen oletusarvoisena lähtökohtana on hyvä tapa.Aloita HTML:llä ja CSS:llä ja tartu skripteihin vasta, kun kohtaat selkeän rajoituksen. Tämä opettaa sinulle lisää alustan jo olemassa olevista ominaisuuksista ja johtaa usein kevyempiin ja selkeämpiin koodikantoihin.

Askel taaksepäin, uusi CSS-ominaisuuksien joukko vieritystä, napsauttamista, painikkeita, merkkejä ja vieritystilakyselyitä varten on muuttanut karusellit skriptipainotteisista widgeteistä enimmäkseen deklaratiivisiksi komponenteiksi. Nojautumalla vieritystoimintoon sivutuksen ydintoiminnoissa, ::scroll-button() ja ::scroll-marker() Jos sitä tuetaan ja ominaisuuksien tunnistuksen ja esteettömyyskäytäntöjen parhaita käytäntöjä sovelletaan, voit toimittaa karuselleja, jotka ovat nopeita, kestäviä ja helpommin ylläpidettäviä kuin perinteiset JS-pohjaiset liukusäätimet – säilyttäen silti riittävästi joustavuutta JavaScriptin lisäämiseen tilanteissa, joissa syklinen logiikka tai edistyneet vuorovaikutukset sitä todella vaativat.

propiedad css kosketustoiminto
Aiheeseen liittyvä artikkeli:
Propiedad CSS-kosketustoiminto: cómo domar gestos táctiles con precisión
Related viestiä: