Utwórz projekt ↗
CSS / JS · KOD NA LICENCJI MIT

Lekka karuzela

Przesuwanie kart bez ciężkich dodatków.

Edytuj HTML, CSS i JS ↗ Otwórz konfigurator ↗

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Lekka karuzela” możesz dopasować do kolorów i treści swojej strony.

Jak działa ten efekt?

HTML określa strukturę przykładu, CSS jego wygląd, a JavaScript — jeżeli występuje — odpowiada za interakcję. Podgląd pokazuje domyślne ustawienia, które możesz zmienić w edytorze.

Jak dodać go na stronę?

  1. Otwórz przykład w edytorze i podmień tekst oraz kolory.
  2. HTML wstaw w miejscu, w którym ma pojawić się element.
  3. CSS przenieś do arkusza stylów swojej strony. Reguły body z podglądu dopasuj do własnego układu.
  4. JavaScript uruchom po załadowaniu elementów HTML, na przykład przed zamknięciem </body>.
  5. Sprawdź działanie na telefonie, klawiaturą i z własną treścią.

Na co zwrócić uwagę?

Podmień treści i odnośniki. Kod działa w przeglądarce; formularze wymagają osobnej obsługi wysyłania po stronie serwera.

Co możesz zmienić w konfiguratorze?

Tytuły slajdów (osobne wiersze), Kolor akcentu, Slajdy na komputerze, Klasa CSS. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Lekka karuzela

HTML

<div class="slider">
    <div class="items">
        <article class="item"><span>01</span><h3>Pierwszy pomysł</h3><p>Miejsce na opis Twojego projektu.</p></article>
        <article class="item"><span>02</span><h3>Nowa perspektywa</h3><p>Miejsce na opis Twojego projektu.</p></article>
        <article class="item"><span>03</span><h3>Dobry kierunek</h3><p>Miejsce na opis Twojego projektu.</p></article>
        <article class="item"><span>04</span><h3>Gotowy projekt</h3><p>Miejsce na opis Twojego projektu.</p></article>
    </div>
    <div class="arrows"><button type="button" aria-label="Poprzedni slajd">←</button><button type="button" aria-label="Następny slajd">→</button></div>
</div>

CSS

*{box-sizing:border-box}body{margin:0;padding:35px 24px;background:#f4f5ef;color:#293322;font:15px/1.7 Arial,sans-serif;min-height:100vh;display:grid;place-items:center}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #738858;outline-offset:4px}h2,h3,p{margin-top:0}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.slider{width:100%;max-width:900px;min-width:0}
.slider .items{display:flex;gap:16px;overflow:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#788b63 #e8ecdf}
.slider .item{flex:0 0 calc((100% - 16px) / 2);scroll-snap-align:start;padding:28px;border-radius:9px;background:#788b63;color:#fff;min-height:210px}
.slider .item span{font:12px monospace;opacity:.65}
.slider .item h3{font-size:25px;margin:28px 0 10px;line-height:1.2}
.slider .item p{font-size:12px;opacity:.8}
.slider .arrows{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.slider button{width:38px;height:35px;border:1px solid #cbd4be;border-radius:5px;background:#fff}
@media(max-width:600px){.slider .item{flex-basis:85%}}

JavaScript

const slider = document.querySelector('.slider');
const items = slider.querySelector('.items');
slider.querySelectorAll('button').forEach((button, i) => {
    button.addEventListener('click', () => {
        const step = (items.querySelector('.item')?.getBoundingClientRect().width || items.clientWidth) + 16;
        items.scrollBy({left: i ? step : -step, behavior: 'smooth'});
    });
});

Podobne przykłady