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

Widoczność i siła hasła

Czytelna informacja podczas wpisywania.

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

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Widoczność i siła hasła” 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?

Etykieta pola, Kolor wskaźnika. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Widoczność i siła hasła

HTML

<div class="password"><label for="password">Twoje hasło</label><div class="field"><input id="password" type="password" autocomplete="new-password" aria-describedby="strength"><button type="button" aria-label="Pokaż hasło" aria-pressed="false">Pokaż</button></div><div class="meter"><i></i></div><p id="strength" role="status">Wpisz hasło, aby zobaczyć wskazówkę.</p><small>Wskaźnik jest orientacyjny. Używaj długich, unikalnych haseł.</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}}
.password{width:100%;max-width:450px}.password label{display:block;font-size:13px;margin-bottom:8px}.field{display:flex;border:1px solid #cfdbc1;border-radius:6px;overflow:hidden;background:#fff}.field input{width:100%;min-width:0;padding:12px;border:0;background:none;outline-offset:-3px}.field button{border:0;background:none;padding:10px;font-size:11px;color:#809569}.meter{height:5px;background:#dfe7d4;margin-top:15px;border-radius:5px;overflow:hidden}.meter i{display:block;width:0;height:100%;background:#809569;transition:width .2s}.password p{font-size:12px;color:#7e906b;margin:9px 0}.password small{font-size:10px;color:#8a967b}

JavaScript

const input=document.querySelector('#password'),toggle=document.querySelector('.field button');
toggle.addEventListener('click',()=>{const show=input.type==='password';input.type=show?'text':'password';toggle.textContent=show?'Ukryj':'Pokaż';toggle.setAttribute('aria-pressed',String(show));toggle.setAttribute('aria-label',show?'Ukryj hasło':'Pokaż hasło')});
input.addEventListener('input',()=>{
    const value=input.value;
    const score=value.length===0?0:Math.min(4,(value.length>=8?1:0)+(value.length>=14?1:0)+(/[a-z]/.test(value)&&/[A-Z]/.test(value)?1:0)+(/[0-9]/.test(value)&&/[^a-zA-Z0-9]/.test(value)?1:0));
    document.querySelector('.meter i').style.width=(value.length?Math.max(1,score)*25:0)+'%';
    document.querySelector('#strength').textContent=value.length?['Bardzo krótkie hasło','Dodaj długość i różnorodność','Możesz je jeszcze wydłużyć','Dobry kierunek','Długie i zróżnicowane'][score]:'Wpisz hasło, aby zobaczyć wskazówkę.';
});

Podobne przykłady