Tarayıcıların standart onay kutusu (checkbox) görünümünü, son derece modern ve estetik bir geçiş anahtarı (toggle switch) ile değiştiren kullanışlı bir snippet örneğidir. CSS’in sözde elemanları (pseudo-elements) ve :checked sözde sınıfı (pseudo-class) yardımıyla hiçbir JavaScript koduna gerek kalmadan pürüzsüz ve göz alıcı bir animasyon elde edilmiştir.
<label class="custom-toggle">
<input type="checkbox" class="custom-toggle-input" aria-label="Toggle Switch" />
<span class="custom-toggle-slider"></span>
</label>/* Toggle Anahtarının Kapsayıcısı */
.custom-toggle {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
/* Varsayılan Checkbox'ı Gizle */
.custom-toggle-input {
opacity: 0;
width: 0;
height: 0;
}
/* Kaydırıcının Arka Planı */
.custom-toggle-slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #e2e8f0;
transition: background-color 0.4s;
border-radius: 34px;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* Kaydırıcının Düğme (Thumb) Kısmı */
.custom-toggle-slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
transition: transform 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
border-radius: 50%;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
/* İşaretlendiğinde Arka Plan Rengi */
.custom-toggle-input:checked + .custom-toggle-slider {
background-color: #3b82f6;
}
/* Klavye Odaklandığında Dış Hat (Outline) */
.custom-toggle-input:focus-visible + .custom-toggle-slider {
outline: 2px solid #3b82f6;
outline-offset: 2px;
}
/* İşaretlendiğinde Düğmenin Hareketi */
.custom-toggle-input:checked + .custom-toggle-slider:before {
transform: translateX(26px);
} Standart <input type="checkbox"> etiketlerinin görünümü tarayıcıdan tarayıcıya farklılık gösterdiği gibi CSS ile tasarımsal olarak özelleştirilebilme imkânı da oldukça kısıtlıdır. Bu durumun üstesinden gelmek amacıyla, onay kutusunun kendisi ekranda görünmez hale getirilmiş ve hemen yanındaki <span> (kaydırıcı) elemanı üzerinden özel bir arayüz tasarlanmıştır.
opacity: 0, width: 0 ve height: 0 değerleri verilerek ekrandan tamamen gizlenmesi sağlanmıştır.::before sözde elemanı (pseudo-element) ile oluşturulup biçimlendirilmiştir.transition: transform 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55) ayarı sayesinde düğmenin her iki yöne hareketinde hafifçe sekip yerine oturduğu çok daha doğal ve tatmin edici bir geçiş (easing) efekti yaratılmıştır.:focus-visible sözde sınıfı üzerinden şık ve belirgin bir dış hat (outline) uygulanmıştır.Bu geçiş anahtarı, ayarlar menüleri veya aydınlık/karanlık mod geçişleri gibi anında tepki gerektiren iki durumlu (açma/kapatma) işlemlerde muazzam bir kullanıcı deneyimi sağlar.