HTML Diff
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>