0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Когда я только начинал изучать веб-разработку, для меня совсем неочевидным было, как сделать кастомные чекбоксы, потому что просто так стилизовать мы их не можем.</strong></p>
1
<p><strong>Когда я только начинал изучать веб-разработку, для меня совсем неочевидным было, как сделать кастомные чекбоксы, потому что просто так стилизовать мы их не можем.</strong></p>
2
<p>Поэтому хочу рассказать, как это работает. Вот пример конечного результата:</p>
2
<p>Поэтому хочу рассказать, как это работает. Вот пример конечного результата:</p>
3
<h2>Содержание</h2>
3
<h2>Содержание</h2>
4
<ul><li><a>Подготовительный этап:</a></li>
4
<ul><li><a>Подготовительный этап:</a></li>
5
<li><a>Алгоритм:</a></li>
5
<li><a>Алгоритм:</a></li>
6
<li><a>Шаг 4</a></li>
6
<li><a>Шаг 4</a></li>
7
</ul><h2>Подготовительный этап:</h2>
7
</ul><h2>Подготовительный этап:</h2>
8
<p>Поскольку я не знаю уровень владения HTML и CSS у читателя статьи, я посчитал нужным упомянуть 3 момента:</p>
8
<p>Поскольку я не знаю уровень владения HTML и CSS у читателя статьи, я посчитал нужным упомянуть 3 момента:</p>
9
<ol><li><p>Селектор<strong>элемент1~элемент2</strong>(пример:<strong>div~p</strong>) выберет все элементы<em><strong>p</strong></em>, находящиеся в коде за элементом<em><strong>div</strong></em></p>
9
<ol><li><p>Селектор<strong>элемент1~элемент2</strong>(пример:<strong>div~p</strong>) выберет все элементы<em><strong>p</strong></em>, находящиеся в коде за элементом<em><strong>div</strong></em></p>
10
</li>
10
</li>
11
<li><p><strong>Label</strong>и<strong>input</strong>можно связывать друг с другом, чтобы<strong>input[type='checkbox']</strong>реагировал на нажатие на<strong>label.</strong>Если<strong>input</strong>находится внутри<strong>label</strong>, то он будет менять свое состояние при клике на<strong>label</strong>(становиться<strong></strong></p>
11
<li><p><strong>Label</strong>и<strong>input</strong>можно связывать друг с другом, чтобы<strong>input[type='checkbox']</strong>реагировал на нажатие на<strong>label.</strong>Если<strong>input</strong>находится внутри<strong>label</strong>, то он будет менять свое состояние при клике на<strong>label</strong>(становиться<strong></strong></p>
12
и наоборот). Подробнее об этом вот<a>здесь</a>.</li>
12
и наоборот). Подробнее об этом вот<a>здесь</a>.</li>
13
<li><p>Вид в отжатом/нажатом состоянии будет менять<strong>div</strong>с классом<strong>.custom-check-icon</strong></p>
13
<li><p>Вид в отжатом/нажатом состоянии будет менять<strong>div</strong>с классом<strong>.custom-check-icon</strong></p>
14
</li>
14
</li>
15
</ol><h2>Алгоритм:</h2>
15
</ol><h2>Алгоритм:</h2>
16
<h3>Шаг 1</h3>
16
<h3>Шаг 1</h3>
17
<p>Сначала создадим верстку без стилей: у нас будет<strong>div-обертка,</strong>а внутри<strong>checkbox</strong>и нужный нам текст. Добавим стилей чтобы выровнять все правильным образом:</p>
17
<p>Сначала создадим верстку без стилей: у нас будет<strong>div-обертка,</strong>а внутри<strong>checkbox</strong>и нужный нам текст. Добавим стилей чтобы выровнять все правильным образом:</p>
18
<p><strong>HTML:</strong></p>
18
<p><strong>HTML:</strong></p>
19
<p>Жанры</p>
19
<p>Жанры</p>
20
<p><strong>CSS:</strong></p>
20
<p><strong>CSS:</strong></p>
21
<p><strong>Результат:</strong></p>
21
<p><strong>Результат:</strong></p>
22
<h3>Шаг 2</h3>
22
<h3>Шаг 2</h3>
23
<p>Кастомизируем конечный вид чекбокса с помощью псевдоэлемента<strong>::before:</strong></p>
23
<p>Кастомизируем конечный вид чекбокса с помощью псевдоэлемента<strong>::before:</strong></p>
24
<p><strong>CSS:</strong></p>
24
<p><strong>CSS:</strong></p>
25
<p><strong>Результат:</strong></p>
25
<p><strong>Результат:</strong></p>
26
<h3>Шаг 3</h3>
26
<h3>Шаг 3</h3>
27
<p>Теперь сделаем таким образом, чтобы наш маленький фиолетовый квадратик отображался только в том случае, когда наш<strong>input:checked:</strong></p>
27
<p>Теперь сделаем таким образом, чтобы наш маленький фиолетовый квадратик отображался только в том случае, когда наш<strong>input:checked:</strong></p>
28
<p><strong>CSS:</strong></p>
28
<p><strong>CSS:</strong></p>
29
<p><strong>Результат:</strong></p>
29
<p><strong>Результат:</strong></p>
30
<h2>Шаг 4</h2>
30
<h2>Шаг 4</h2>
31
<p>Все что нам остается - скрыть наш<strong>input:</strong></p>
31
<p>Все что нам остается - скрыть наш<strong>input:</strong></p>
32
<p><strong>CSS:</strong></p>
32
<p><strong>CSS:</strong></p>
33
<p><strong>Конечный результат:</strong></p>
33
<p><strong>Конечный результат:</strong></p>
34
<h3>Итог</h3>
34
<h3>Итог</h3>
35
<p>Вот таким образом можно сделать кастомный чекбокс. Хочу отметить, что это всего лишь один из вариантов, они могут: отличаться, например,<strong>input</strong>может быть не внутри<strong>label,</strong>а рядом, а также вместо псевдоэлемента<strong>::before</strong>можно использовать<strong>background-image</strong>(именно так можно сделать чекбокс с превьюшки поста)</p>
35
<p>Вот таким образом можно сделать кастомный чекбокс. Хочу отметить, что это всего лишь один из вариантов, они могут: отличаться, например,<strong>input</strong>может быть не внутри<strong>label,</strong>а рядом, а также вместо псевдоэлемента<strong>::before</strong>можно использовать<strong>background-image</strong>(именно так можно сделать чекбокс с превьюшки поста)</p>