Sobes.tech
Middle

Kako biste implementirali prilagođeni checkbox?

sobes.tech АИ

Одговор од АИ

Postoji nekoliko načina za implementaciju:

  1. Skrivenje nativnog unosa, stilizovanje labele. Ovo je najpristupačniji i semantički najispravniji način.
  2. Potpuno skrivanje nativnog unosa, korišćenje aria- atributa i JavaScript za upravljanje stanjem. Zahteva pažljiviji rad na pristupačnosti.

Implementacija sa skrivanjem nativnog unosa:

  • HTML:

    // Koristimo skriveni unos i povezanu labelu.
    <input type="checkbox" id="my-checkbox" class="visually-hidden">
    <label for="my-checkbox" class="custom-checkbox-label">
        <span class="custom-checkbox-indicator"></span>
        <span class="custom-checkbox-text">Moj prilagođeni checkbox</span>
    </label>
    
  • CSS:

    // Klasa za vizuelno skrivanje nativnog unosa, zadržavajući pristupačnost za čitače ekrana.
    .visually-hidden {
        position: absolute;
        width: 1px;
        height: 1px;
        margin: -1px;
        padding: 0;
        overflow: hidden;
        border: 0;
        clip: rect(0 0 0 0);
    }
    
    // Stilizacija prilagođene labele.
    .custom-checkbox-label {
        display: inline-flex;
        align-items: center;
        cursor: pointer;
    }
    
    // Stilizacija indikatora (kvadratića) checkbox-a.
    .custom-checkbox-indicator {
        display: inline-block;
        width: 20px;
        height: 20px;
        border: 1px solid #ccc;
        margin-right: 8px; /* Razmak od teksta */
        border-radius: 4px;
        background-color: #fff;
        transition: all 0.2s ease-in-out;
    }
    
    // Stilizacija indikatora za označeno stanje.
    .custom-checkbox-label input:checked + .custom-checkbox-indicator {
        background-color: #007bff; /* Boja pri izboru */
        border-color: #007bff;
        position: relative; /* Za pozicioniranje kvačice */
    }
    
    // Dodavanje "kvačice" pomoću pseudo-elementa :after.
    .custom-checkbox-label input:checked + .custom-checkbox-indicator:after {
        content: '';
        position: absolute;
        top: 3px;
        left: 6px;
        width: 4px;
        height: 8px;
        border: solid white;
        border-width: 0 2px 2px 0;
        transform: rotate(45deg);
    }
    

Ovaj pristup omogućava korišćenje standardnog ponašanja checkbox-a (stanje checked), istovremeno pružajući punu slobodu u stilizovanju njegovog izgleda. visually-hidden obezbeđuje pristupačnost za pomoćne tehnologije.