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

Ocena gwiazdkami

Interaktywny wybór oceny od 1 do 5.

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

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Ocena gwiazdkami” 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?

Pytanie, Kolor gwiazdek. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Ocena gwiazdkami

HTML

<fieldset class="rating"><legend>Jak oceniasz ten efekt?</legend><div><label><input type="radio" name="rating" value="1"><span aria-hidden="true">★</span><span class="sr">1 z 5</span></label><label><input type="radio" name="rating" value="2"><span aria-hidden="true">★</span><span class="sr">2 z 5</span></label><label><input type="radio" name="rating" value="3"><span aria-hidden="true">★</span><span class="sr">3 z 5</span></label><label><input type="radio" name="rating" value="4"><span aria-hidden="true">★</span><span class="sr">4 z 5</span></label><label><input type="radio" name="rating" value="5"><span aria-hidden="true">★</span><span class="sr">5 z 5</span></label></div><p role="status">Wybierz ocenę</p></fieldset>

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}}
.rating{border:0;text-align:center}.rating legend{font-size:20px;font-weight:bold;margin-bottom:15px}.rating>div{display:flex;justify-content:center;gap:6px}.rating label{position:relative;cursor:pointer}.rating input{position:absolute;inset:0;opacity:0;cursor:pointer}.rating label>span:first-of-type{font-size:43px;color:#d2ddc6;line-height:1.3}.rating label.active>span:first-of-type{color:#e9a92c}.rating label:focus-within{outline:2px solid #e9a92c;border-radius:4px}.rating p{font-size:12px;color:#81946d;margin-top:15px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}

JavaScript

const inputs=[...document.querySelectorAll('.rating input')];
inputs.forEach(input=>input.addEventListener('change',()=>{
    inputs.forEach(item=>item.parentElement.classList.toggle('active',Number(item.value)<=Number(input.value)));
    document.querySelector('.rating p').textContent='Twoja ocena: '+input.value+' / 5. Dziękujemy!';
}));

Podobne przykłady