TGViewer
Веб-страница Веб-страница @tproger_web · 22.3K subscribers
Post #6621 700
Свой чекбокс без переписывания его поведения на JavaScript

У чекбокса нужен особый вид, но переключение с клавиатуры, фокус и участие в форме хочется сохранить. Для этого внутри компонента можно оставить настоящий input.

В примере Энди Белла поле лежит в label, занимает всю площадь своей обёртки и получает appearance: none. Рядом находится SVG-галочка, скрытая от вспомогательных технологий через aria-hidden.

Состояние по-прежнему хранит браузер. Селектор input:checked + svg показывает галочку, а :has(input:checked) меняет фон обёртки. Само поле остаётся доступным для фокуса.

Размеры заданы в em, поэтому компонент масштабируется вместе со шрифтом. Для радиокнопок автор показывает тот же подход с другим индикатором. В статье есть живые примеры и полный CSS.
  • 🔥 3
More from @tproger_web
  1. Oct 17, 2026Где именно прокрутка должна запустить анимацию? Теперь это видно в DevTools Анимация сраба…
  2. Oct 17, 2026Как найти компонент, который тормозит сборку Astro Сборка замедлилась. Можно включить пара…
  3. Oct 16, 2026Мобильное меню Starlight работает даже без JavaScript Если скрипт не загрузился, меню доку…
  4. Oct 16, 2026Что проверить после автоматической миграции на SvelteKit 3 Команда sv migrate sveltekit-3…
  5. Oct 16, 2026Поле ввода, которое помнит формулу и показывает ответ В форму нужно внести число, которое…
  6. Oct 15, 2026Как перенести сайт на Astro, сохранив React-компоненты Evil Martians перенесли сайт с Gats…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →