Kako stilizovati čekboksove pomoću CSS bez korišćenja biblioteka?
sobes.tech АИ
Одговор од АИ
За стилизацију квадратића за потврду без библиотека можете користити комбинацију скривања стандардног елемента и стилизовања псевдо-елемената ::before или ::after који су повезани са родитељским <label>.
-
Скривање стандардног квадратића:
input[type="checkbox"] { display: none; /* или visibility: hidden; height: 0; width: 0; */ } -
Креирање стилизованог "квадрата" помоћу псевдо-елемента
<label>:input[type="checkbox"] + label::before { content: ''; /* Обавезно за приказ псевдо-елемента */ display: inline-block; width: 1em; /* Размер квадрата */ height: 1em; /* Размер квадрата */ border: 1px solid #ccc; /* Рамка квадрата */ margin-right: 0.5em; /* Размак од текста етикете */ vertical-align: middle; /* Вертикално поравнање */ /* Други стилови: background-color, border-radius, box-shadow */ } -
Стил за означено стање:
Користимо селектор
checkedзаinputи одговарајуће мењамо стилове псевдо-елементаlabel.input[type="checkbox"]:checked + label::before { background-color: #007bff; /* Боја позадине означеног квадратића */ border-color: #007bff; /* Боја ивице означеног квадратића */ /* Други стилови по жељи */ } -
Додавање "попуне" (или другог индикатора):
Можете користити други псевдо-елемент (
::after) или стилизовати постојећи::beforeпомоћуbackground-image(svg, data-url) или стилизовањемborder.Пример са
borderза креирање попуне:input[type="checkbox"]:checked + label::after { content: ''; display: inline-block; width: 0.4em; /* Ширина линије попуне */ height: 0.7em; /* Висина линије попуне */ border-right: 2px solid white; /* Десни део попуне */ border-bottom: 2px solid white; /* Доњи део попуне */ transform: rotate(45deg); /* Окрећење за формирање попуне */ position: absolute; /* За позиционирање унутар `::before` */ top: 0.1em; /* Прилагођавање позиције */ left: 0.3em; /* Прилагођавање позиције */ /* Родитељски `label::before` може захтевати `position: relative;` */ }
За исправан рад последњег примера, додајте position: relative; на input[type="checkbox"] + label::before:
input[type="checkbox"] + label::before {
/* ... претходни стилови ... */
position: relative; /* За позиционирање `::after` */
}
Овај приступ обезбеђује потпуну контролу над изгледом квадратића за потврду и добру приступачност, јер стандардни елемент и даље постоји и реагује на корисничке акције (клик, фокус). Важно је повезати input са label помоћу атрибута id и for за исправан рад при клику на текст етикете.
<input type="checkbox" id="myCheckbox">
<label for="myCheckbox">Сагласан сам са условима</label>