Китепканаларсыз CSS менен чекбоксуларды кантип стилизациялоо керек?
sobes.tech AI
AIден жооп
Кодекссиз чекбокс стилизациялоо үчүн стандарттык элементти жашырып, псевдоэлементтер ::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;` болушу керек */ }
Соңку мисалды туура иштөө үчүн, input[type="checkbox"] + label::before үчүн position: relative; кошуңуз:
input[type="checkbox"] + label::before {
/* ... мурунку стилдер ... */
position: relative; /* `::after` үчүн */
}
Бул ыкма чекбокс көрүнүшүн толук көзөмөлдөөгө жана жакшы жеткиликтүүлүккө кепилдик берет, анткени стандарттык элемент дагы эле бар жана колдонуучунун аракеттерине жооп берет (клик, фокус). input менен label байланыштыруу үчүн id жана for атрибутторун колдонуу маанилүү.
<input type="checkbox" id="myCheckbox">
<label for="myCheckbox">Шарттарга макулмун</label>