Кратко
СкопированоПсевдокласс, который активируется, когда пользователь отмечает чекбокс или выбирает одну из радиокнопок.
С его помощью удобно стилизовать эти элементы в их активном состоянии.
Пример
СкопированоБудем менять цвет фона option, когда он выбран, и заполнять чекбокс или радиокнопку синим, когда они отмечены:
.checkbox:checked + .checkbox-title::after { content: ''; position: absolute; left: 6px; top: calc(50% - 6px); width: 12px; height: 12px; rotate: 45deg; border-radius: 3px; background-color: #2E9AFF;}.radio:checked + .radio-title::before { content: ""; position: absolute; left: 0; top: calc(50% - 12px); width: 25px; height: 25px; background: radial-gradient( circle, #2E9AFF 0%, #2E9AFF 40%, transparent 50%, transparent 100% );}option:checked { background-color: #2E9AFF; color: #18191C;}
.checkbox:checked + .checkbox-title::after {
content: '';
position: absolute;
left: 6px;
top: calc(50% - 6px);
width: 12px;
height: 12px;
rotate: 45deg;
border-radius: 3px;
background-color: #2E9AFF;
}
.radio:checked + .radio-title::before {
content: "";
position: absolute;
left: 0;
top: calc(50% - 12px);
width: 25px;
height: 25px;
background: radial-gradient(
circle,
#2E9AFF 0%,
#2E9AFF 40%,
transparent 50%,
transparent 100%
);
}
option:checked {
background-color: #2E9AFF;
color: #18191C;
}
Как пишется
СкопированоПосле селектора, который выбирает элемент чекбокса или радиокнопки, ставим двоеточие и пишем ключевое слово checked.
Как понять
СкопированоБраузер присваивает чекбоксу или радиокнопке псевдокласс :checked, когда они отмечены. Мы можем использовать это для стилизации элемента.
Подсказки
Скопировано💡 Этот псевдокласс есть только у тех элементов, которые можно отметить: <input type, <input type.
💡 По задумке должен работать и с <option>, но поскольку выпадающий список сильно отличается от системы к системе и от браузера к браузеру, то пока работает только в браузере Chrome на Windows. Так что ждём и надеемся, но особо не используем.
На практике
Скопированосоветует
Скопировано🛠 Очень часто этот класс пригождается, когда вы делаете какой-то нестандартный элемент управления на основе чекбокса или радиокнопок. В этом случае стандартные элементы скрываются, но их поведение, в частности псевдокласс :checked, позволяет что-то переключать вообще без JavaScript.
Например, вот это выпадающее меню реализовано на чистом HTML с использованием трюка c чекбоксом:
<div class="dropdown"> <input type="checkbox" id="menu"> <label for="menu">Выбери черепашку</label> <ul> <li><a href="#">Леонардо</a></li> <li><a href="#">Рафаэль</a></li> <li><a href="#">Донателло</a></li> <li><a href="#">Микеланджело</a></li> <li><a href="#">Боттичелли</a></li> <li><a href="#">Караваджо</a></li> </ul></div>
<div class="dropdown">
<input type="checkbox" id="menu">
<label for="menu">Выбери черепашку</label>
<ul>
<li><a href="#">Леонардо</a></li>
<li><a href="#">Рафаэль</a></li>
<li><a href="#">Донателло</a></li>
<li><a href="#">Микеланджело</a></li>
<li><a href="#">Боттичелли</a></li>
<li><a href="#">Караваджо</a></li>
</ul>
</div>
.dropdown { position: relative;}.dropdown input,.dropdown ul { display: none;}.dropdown label { cursor: pointer; border-bottom: 3px dashed #2E9AFF;}.dropdown ul { position: absolute; left: calc(100% + 25px); top: 50%; transform: translateY(-50%); margin: 0; padding: 40px 10px; list-style: none; background-color: #FFFFFF; font-size: 20px;}.dropdown a { color: #000000;}.dropdown :checked ~ label { color: #2E9AFF;}.dropdown :checked ~ ul { display: inline-block;}
.dropdown {
position: relative;
}
.dropdown input,
.dropdown ul {
display: none;
}
.dropdown label {
cursor: pointer;
border-bottom: 3px dashed #2E9AFF;
}
.dropdown ul {
position: absolute;
left: calc(100% + 25px);
top: 50%;
transform: translateY(-50%);
margin: 0;
padding: 40px 10px;
list-style: none;
background-color: #FFFFFF;
font-size: 20px;
}
.dropdown a {
color: #000000;
}
.dropdown :checked ~ label {
color: #2E9AFF;
}
.dropdown :checked ~ ul {
display: inline-block;
}