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

Przełącznik jasny / ciemny

Wybór motywu zapamiętany lokalnie.

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

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Przełącznik jasny / ciemny” 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?

Nagłówek, Kolor akcentu. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Przełącznik jasny / ciemny

HTML

<div class="theme-card"><button type="button" class="theme-toggle" aria-pressed="false">Zmień motyw ☾</button><h2>Twoja strona. Twój motyw.</h2><p>Jasno czy ciemno? Dopasuj widok do swoich preferencji.</p><small>Wybór zapisujemy w tej przeglądarce, jeśli pozwalają na to jej ustawienia.</small></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}}
body{transition:background .25s,color .25s}.theme-card{width:100%;max-width:550px;padding:30px;border:1px solid #d4dfc7;background:#fff;border-radius:12px}.theme-card h2{font-size:30px;line-height:1.2;margin-top:25px}.theme-card p{color:#81946b;font-size:14px}.theme-card small{color:#8c997d;font-size:10px}.theme-toggle{background:#e95b30;border:0;padding:9px 13px;border-radius:5px;color:white;font-size:11px}body.dark{background:#20291b;color:#e5ecdc}body.dark .theme-card{background:#2b3724;border-color:#425136}body.dark p,body.dark small{color:#b4c3a5}

JavaScript

const toggle=document.querySelector('.theme-toggle');
function setTheme(dark){document.body.classList.toggle('dark',dark);toggle.setAttribute('aria-pressed',String(dark));toggle.textContent=dark?'Jasny motyw ☀':'Ciemny motyw ☾'}
try{setTheme(localStorage.getItem('jq-demo-theme')==='dark')}catch{}
toggle.addEventListener('click',()=>{const dark=!document.body.classList.contains('dark');setTheme(dark);try{localStorage.setItem('jq-demo-theme',dark?'dark':'light')}catch{}});

Podobne przykłady