Содержание
Стилизация переключателей (радио-кнопок) в CSS
Радио-кнопки подразумевают, что вы выбираете один элемент из некоторого количества, поэтому элемент <input type="radio">
получил название переключателя в отличие от флажков, которые подразумевают множественный выбор. Браузеры довольно неплохо отображают радиокнопки по умолчанию.
Выбор 1
Выбор 2
Выбор 2
Однако, вам может понадобится как-то стилизовать эти элементы для своего сайта.
Как правило, стилизация радио-кнопок основана на использовании такого элемента, как label
, клик на котором приводит к выбору определенного переключателя, с которым <label>
связан с помощью атрибута for, в котором указывается id переключателя. Второй вариант — это когда в разметке радио-переключатель находится внутри элемента label
.
Простой пример
See the Pen CSS Radio Buttons by Tristan White (@triss90) on CodePen.18892
Радио-кнопки, похожие на флажки
Если вы хотите стилизовать переключатели в виде флажков — пример от Andrew Vereshchak — как раз то, что нужно.
See the Pen Toggle radio intput with the label by Andrew Vereshchak (@multum) on CodePen.18892
Переключатели с изменением цвета и иконки
Здесь автор Andrew использовал абсолютное позиционирование для отдельного блока с классом .switch, в который входят 2 <label> и <span>. Также здесь не обошлось без псевдоэлемента ::after и псевдокласса :checked.
See the Pen Awesome Toggle Button by Andrew (@theawesomecoder61) on CodePen.18892
Разноцветные радио-кнопки
В этом примере от Dronca Raul каждый переключатель имеет свой цвет и галочку внутри при щелчке на элементе.
See the Pen Custom Radio Buttons by Dronca Raul (@rauldronca) on CodePen.18892
Используем переключатели для выбора цвета
В этом примере тема цветов для переключателей продолжается. Здесь мы не только прячем элемент <input type="radio">
с помощью CSS, но и изменяем фоновый цвет элемента с id="output"
на тот, который указан в качестве value
для <input>
и фона для span-элемента, вло женного в <label>
.
See the Pen Radio Color Picker by Elen (@ambassador) on CodePen.18892
Переключатели Да-Нет-Возможно
Еще одно цветовое решение от Matthew Blode.
See the Pen Flat Radio — Yes/No by Matthew Blode (@mblode) on CodePen.18892
Переключатель макета
Этот пример от Naoya очень удобен для демонстрации макетов с разной шириной. Интересно, что радио-кнопки, а точнее заменяющие их элементы label
выглядят как … ссылки с подчеркиванием выбранного (псевдокласс :checked) в данный момент элемента.
See the Pen CSS Switch Layout by Naoya (@nxworld) on CodePen.18892
Выбор блюд
В этом примере от Kris Hedstrom радио-кнопки в какой-то степени похожи на чекбоксы (флажки) — они отмечают ваш выбор в виде галочки.
See the Pen Snacks? Flat radio button inputs… by Kris Hedstrom (@kristofferh) on CodePen.18892
Использование радио-кнопок для выставления рейтинга в виде звездочек
Автор Stas Melnikov
See the Pen Pure CSS Rating via CSS Custom Properties as API by Stas Melnikov (@melnik909) on CodePen.18892
Анимация при переключении выбора
Несколько примеров, в которых использована анимация при переключении между радио-кнопками.
Автор: Tommaso Poletti
See the Pen Jelly Radio Button by Tommaso Poletti (@tomma5o) on CodePen.18892
Простые переключения с эффектом вдавливания от Pamela Dayne
See the Pen Just very simple radio buttons by Pamela Dayne (@pamdayne) on CodePen.18892
Переключение с перепрыгиванием от Jon Kantner
See the Pen Radio Hopping by Jon Kantner (@jkantner)
on CodePen.0
Автор Liam использовал для анимации JS-код.
See the Pen Bulgy radios by Liam (@liamj) on CodePen.18892
Интересное решение с радио-кнопками на темном фоне от Andrej Sharapov
See the Pen Animated SVG radio buttons by Andrej Sharapov (@andrejsharapov) on CodePen.18892
Анимация и стили как для радио-кнопок, так и для флажков от WILDER TAYPE.
See the Pen Ripple animation on input type radio and Checkbox by WILDER TAYPE (@wilder_taype) on CodePen.18892
Использование маски
See the Pen Underground radios by Mikael Ainalem (@ainalem) on CodePen.18892
«Текущая» кнопка
See the Pen Liquid Radio Button by Tamino Martinius (@Zaku) on CodePen.18892
Замечательное решение для переключения кнопок меню
See the Pen Material Radio Button by CODEARMADA (@montechristos) on CodePen.18892
Последовательное и быстрое заполнение кнопки
See the Pen Input Radio by Andreas Storm (@avstorm) on CodePen.18892
Выбираем кредитную карту вместе с Dean
See the Pen Recreation: Card theme switcher by Dean (@visualcookie) on CodePen.18892
Перепрыгивающий шарик от Jon Kantner
Вариант 1
See the Pen Radio Buttons With Marble and Wood by Jon Kantner (@jkantner) on CodePen.18892
Вариант 2
See the Pen Rolling Radio Buttons by Jon Kantner (@jkantner) on CodePen.18892
Вариант 3 от web-tiki
See the Pen CSS only input radio select concept by web-tiki (@web-tiki) on CodePen.18892
Переключатели в виде блоков с иконками
Автор Gabriel Ferreira предлагает использовать переключатели в виде блоков с анимированными иконками. Это можно сделать не только для Front-End/Back-End, но и для любых других текстов.
See the Pen Radio Button Big Square [Just CSS] by Gabriel Ferreira (@gabrielferreira) on CodePen.18892
Переключатель мужчина-женщина
See the Pen Radio button styling by Morten Olsen (@morten-olsen) on CodePen.18892
Соединительные линии, ведущие к радио-кнопкам
See the Pen Radio Button Circuit by LukasOe (@lukasoe) on CodePen.18892
Переключатели с отметкой в верхнем углу блока
При клике на блоке выбор отмечается сменой цвета и галочкой в круге от Rosa.
See the Pen Checkout Form by Rosa (@RRoberts) on CodePen.18892
Радио-кнопки как переключатели для радио от Jon Kantner
Вариант 1
See the Pen Literal Radio Buttons by Jon Kantner (@jkantner) on CodePen.18892
Вариант 2
See the Pen Literal Radio Buttons (Neumorphic Version) by Jon Kantner (@jkantner) on CodePen.18892
Радио-кнопки для вкладок (табов)
Ronny Siikaluoma предлагает вам использовать радио-кнопки для формирования отзывчивых (адаптивных) вкладок. Заметьте, без всякого JavaScript.
See the Pen Responsive Tabs with Pure CSS by Ronny Siikaluoma (@siiron) on CodePen.18892
Еще один вариант вкладок от Tristan White
See the Pen Tabs (checkbox-hack) by Tristan White (@triss90) on CodePen.18892
Выбор билетов с ценой и временем от Dannie Vinther
See the Pen Choose Ticket [a11y] by Dannie Vinther (@dannievinther) on CodePen.18892
Социальные кнопки
В этом примере от Aron использованы не только радио-кнопки, но и флажки (чекбоксы). При клике на элемент вы увидите pop-up окно с названием выбранной компании или соцсети.
See the Pen Pure CSS Option ( radio & checkbox ) No JS by Aron (@Aoyue) on CodePen.18892
Переключение иконок Google maps
See the Pen Google maps radio buttons CSS only by Elias Meire (@eliasmeire) on CodePen.18892
Переключение цветовых блоков
В этом примере от Ivan Grozdic элементы label
выглядят и работают как ссылки, но без JavaScript, сортируя цветовые блоки.
See the Pen Content filter v2 — pure css — #09 by Ivan Grozdic (@ig_design) on CodePen.18892
Просмотров:
1 266
Библиотека для стилизации чекбоксов на чистом css
Представляем на ваш суд отличную легкую библиотеку, созданную lokesh-coder и предназначенную для стилизации и кастомизации чекбоксов на чистом css.
Вот отличный пример, демонстрирующий возможности данной библиотеки:
Преимущества кастомизации чекбоксов и радиокнопок с помощью данной библиотеки:
- Базовые
- Фигуры — Квадрат, скругленная, круг
- Варианты — Стандартный, заполненный, с тонкой обводкой
- Цвета — primary, success, info, warning и danger
- Варианты заполнения — заливка или обводка
- Анимации — плавная, tada, jelly, pulse, с поворотом
- Переключатель в стиле iOS
- Адаптивность
- Отсутствие javascript
- Кастомный иконочный шрифт
- Поддержка изображений
- SVG иконки
- Возможность переключения между иконками\svg\изображениями
- «Блокировка» для input type=»checkbox»
- Поведения — focus, hover, indeterminate
- Поддержка фреймворков таких как Bootstrap, Foundation, Semantic UI, Bulma …
- Кастомизация с помощью SCSS
- Поддержка всех современных браузеров, в том числе мобильных устройств
- Стили для печати
Установка
Установка через npm или yarn
> npm install pretty-checkbox // or
> yarn add pretty-checkbox
После этого добавить pretty-checkbox.min.css в html
Подключение без скачивания через CDN
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/pretty-checkbox.min.css"/>
Ручная загрузка
Загрузка исходного кода с GitHub
SCSS
Также можете подключить pretty-checkbox.scss в ваш главный scss файл
@import '~pretty-checkbox/src/pretty-checkbox.scss';
Использование
Pretty Checkbox имеет множество встроенных стилей:
Название класса | Описание |
p-default | Базовый стиль |
p-switch | Переключатель в стиле iOS |
p-icon | Для вставки иконочного шрифта |
p-svg | Для вставки svg файла или разметки |
p-image | Для вставки изображения |
И три возможных формы: p-round, p-curve, p-square (по умолчанию)
Пример кастомизированного чекбокса на codepen
See the Pen default pretty-checkbox by Alexey (@leshkacho) on CodePen.
Базовый чекбокс имеет три варианта начертания p-fill p-thick p-outline (по умолчанию)
Эти стили можно комбинировать:
See the Pen basic styles and combines pretty-checboxes by Alexey (@leshkacho) on CodePen.
Рассмотрим checkbox в виде переключателя в стиле iOS
See the Pen KZwoyq by Alexey (@leshkacho) on CodePen.
Вставка иконок, svg, и картинок
<!--Иконочный шрифт-->
<div>
<input type="checkbox">
<div>
<i></i>
<label>Check me</label>
</div>
</div>
<!--svg-->
<div>
<input type="checkbox">
<div>
<img src="file.svg" />
<label>Check me</label>
</div>
</div> <!--Так же поддерживается вставка svg с помощью тегов в тело документа-->
<!--Картинка-->
<div>
<input type="checkbox" />
<div>
<img src="/check.png" />
<label>Block</label>
</div>
</div>
Цветовая схема
Существует 5 основных цветов для отображения чекбокса: p-primary p-success p-warning p-info p-danger
А так же 5 цветов для линии обводки
p-primary-o p-success-o p-warning-o p-info-o p-danger-o
Подробное представление:
See the Pen YYPaOK by Alexey (@leshkacho) on CodePen.
Анимации
See the Pen pretty-checkboxes animation by Alexey (@leshkacho) on CodePen.
Добавление анимация на чекбокс происходит путем добавления описанных в примере классов
Другие возможности
Переключатели
Возможно создание переключателей с заменой текста, иконки только на css!
Происходит это следующим образом
See the Pen toggle pretty-checkboxes by Alexey (@leshkacho) on CodePen.
Можно использовать разные иконки для обоих состояний переключателя
Кастомизация радио-кнопок на чистом css без js
радио кнопки добавляются идентично чекбоксам и с ними работают такие же классы
GitHub проекта Полная документация Скачать архивом с GitHub
Стилизация input type radio на чистом css3
Сегодня создадим стилизацию для поля формы input type radio. Наверное многие знают, что создать стили для радио кнопок не так просто. Так вот сегодня мы с вами создадим красивые радио кнопки при помощи css3 и никаких скриптов и тому подобных громоздких примудростей. В интернете конечно можно найти много интересных методов стилизации радио-кнопок, но они очень громоздкие и не всем понятные. Но я вам помогу решить — эту задачу быстро и без никаких javascript и jquery
Даже в самом CSS3 нет возможности на прямую редактировать стили для поля формы input type radio.
Но для создания стиля для поля radio можно обойти все возможные простые подходы.
Для примера давайте рассмотрим простой тип поля переключателя
Код HTML
<form action="" method="get"> <input name="Кнопка 1" type="radio" value="" checked> Кнопка 1 <input name="Кнопка 2" type="radio" value=""> Кнопка 2 <input name="Кнопка 3" type="radio" value=""> Кнопка 3 <input name="Кнопка 4" type="radio" value=""> Кнопка 4 </form>
Здесь мы можем просмотреть простую реализацию формы. А сейчас приступим к реализации вот такой вот стильной радио кнопки.
Пример как это работает
А сейчас просмотри как же стилизовать радио кнопки, input type radio?
HTML код
<ul> <li> <input type="radio" name="g"> <label for="choice-a"> <span><span></span></span> Choice A </label> </li> <li> <input type="radio" name="g"> <label for="choice-b"> <span><span></span></span> Choice B </label> </li> <li> <input type="radio" name="g"> <label for="choice-c"> <span><span></span></span> Choice C </label> </li> <li> <input type="radio" name="g"> <label for="choice-d"> <span><span></span></span> Choice D </label> </li> </ul>
И вот собственно сам css для стилизации
CSS код
ul.radio-group li { position: relative; list-style: none; padding: 10px; } input[type="radio"] { opacity: 0; position: absolute; } /* Соответствует прямому потомку лейбла, которому предшествует a радио-кнопка */ input[type="radio"] + label > span { position: relative; border-radius: 12px; width: 14px; height: 14px; background-color: #FFFFFF; border: 1px solid #bcbcbc; margin: 0 1em 0 0; display: inline-block; vertical-align: middle; } /* Соответствует промежутку, содержавшему прямым потомком из лейбла, которому предшествует проверенная радио-кнопка */ input[type="radio"]:checked + label > span span { display: inline-block; width: 6px; height: 6px; position: absolute; left: 4px; top: 4px; border-radius: 4px; border: none; background: #e00e17; }
Еще один пример
Очень красивые получились радио-кнопки и просто не привычные конечно. Но надеюсь вам понравилось. Чтож пример надеюсь вам понравился приступаем к просмотру кода который необходимо вставить на страницы сайта.
Код HTML
<div> <form> <input type="radio" name="radio" checked=""> <label for="radio1">Кнопка 1</label> </form> </div> <div> <form> <input type="radio" name="radio"> <label for="radio2">Кнопка 2</label> </form></div> <div> <form> <input type="radio" name="radio"> <label for="radio3">Кнопка 3</label> </form></div> <div> <form> <input type="radio" name="radio"> <label for="radio4">Кнопка 4</label> </form> </div>
Как вы уже поняли из исходного кода, что здесь мы помещаем нашу форму в блок, и придаем для нее css3 стили вот таким образом. Смотрим код ниже
Код CSS
form { margin: 40px 0; } div { clear: both; margin: 0 50px; } label { width: 200px; border-radius: 3px; border: 1px solid #D1D3D4 } /* hide input */ input.radio:empty { margin-left: -999px; } /* style label */ input.radio:empty ~ label { position: relative; float: left; line-height: 2.5em; text-indent: 3.25em; margin-top: 2em; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } input.radio:empty ~ label:before { position: absolute; display: block; top: 0; bottom: 0; left: 0; content: ''; width: 2.5em; background: #D1D3D4; border-radius: 3px 0 0 3px; } /* toggle hover */ input.radio:hover:not(:checked) ~ label:before { content:'\2714'; text-indent: .9em; color: #C2C2C2; } input.radio:hover:not(:checked) ~ label { color: #888; } /* toggle on */ input.radio:checked ~ label:before { content:'\2714'; text-indent: .9em; color: #9CE2AE; background-color: #4DCB6D; } input.radio:checked ~ label { color: #777; } /* radio focus */ input.radio:focus ~ label:before { box-shadow: 0 0 0 3px #999; }
Вот и все пользуйтесь! Конечно для подгона под свои нужды сам css можно изменять подстраивать эксперементировать.
Вот в таком не большом посте, я вам объяснил принцып реализации стилей для радио-кнопок самим чистым методом css3 стилей.
Делаем красивые кнопки выбора (стилизация radio input)
Сегодня я покажу пример как всего в несколько строчек кода сделать приятные и удобные кнопки выбора для вашего сайта. Они отлично впишутся как в десктопную версию вашего сайта так и в мобильную.
Не могу не отметить, что делать стандартные Radio-кнопки или, тем более, выпадающие списки для выбора из 2-4 вариантов не очень удобно и красиво. Поэтому я решил показать вам как можно сделать подобные кнопки выбора значительно удобнее.
Разметка
Нам понадобится всего несколько дополнительных элементов: при написании разметки формы, вам потребуется обернуть каждую пару input
+ label
в блочный элемент, в моём случае это div
с классом form-item
и так же поступить с этими div’ами, у меня это контейнер с классом radio-container
. Вы наверняка уже сталкивались ранее с подобным подходом, если использовали Boostrap Framework.
Я набросал макет для 2, 3 и 4 кнопок выбора (не рекомендую использовать данный подход для большего количества элементов, в таком случае лучше воспользоваться выпадающим списком):
<form>
<div>
<div>
<input type=»radio» name=»option1″ checked>
<label for=»radio1″>radio1</label>
</div>
<div>
<input type=»radio» name=»option1″>
<label for=»radio2″>radio2</label>
</div>
</div>
</form>
<br>
<form>
<div>
<div>
<input type=»radio» name=»option2″ checked>
<label for=»radio3″>radio3</label>
</div>
<div>
<input type=»radio» name=»option2″>
<label for=»radio4″>radio4</label>
</div>
<div>
<input type=»radio» name=»option2″>
<label for=»radio5″>radio5</label>
</div>
</div>
</form>
<br>
<form>
<div>
<div>
<input type=»radio» name=»option3″ checked>
<label for=»radio6″>radio6</label>
</div>
<div>
<input type=»radio» name=»option3″>
<label for=»radio7″>radio7</label>
</div>
<div>
<input type=»radio» name=»option3″>
<label for=»radio8″>radio8</label>
</div>
<div>
<input type=»radio» name=»option3″>
<label for=»radio9″>radio9</label>
</div>
</div>
</form>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| <form> <div> <div> <input type=»radio» name=»option1″ checked> <label for=»radio1″>radio1</label> </div> <div> <input type=»radio» name=»option1″> <label for=»radio2″>radio2</label> </div> </div> </form>
<br>
<form> <div> <div> <input type=»radio» name=»option2″ checked> <label for=»radio3″>radio3</label> </div> <div> <input type=»radio» name=»option2″> <label for=»radio4″>radio4</label> </div> <div> <input type=»radio» name=»option2″> <label for=»radio5″>radio5</label> </div> </div> </form>
<br>
<form> <div> <div> <input type=»radio» name=»option3″ checked> <label for=»radio6″>radio6</label> </div> <div> <input type=»radio» name=»option3″> <label for=»radio7″>radio7</label> </div> <div> <input type=»radio» name=»option3″> <label for=»radio8″>radio8</label> </div> <div> <input type=»radio» name=»option3″> <label for=»radio9″>radio9</label> </div> </div> </form> |
Стили
Для начала нам необходимо будет скрыть сами элементы выбора, я сделал это просто, при помощи свойства display: none
. Теперь пользователю отображаются только элементы label
, если вы не допустили ошибок в разметке, то по нажатию на них, элементы выбора должны активироваться, вы можете проверить это при помощи инструментов разработчика в вашем браузере.
Далее выравниваем label
по горизонтали, вы можете сделать это несколькими способами:
- При помощи свойства
float: left;
, применённого к элементамlabel
. Я не рекомендую данный подход, так как он в некоторых ситуациях, может сломать вёрстку, и, кроме того, вам придётся использовать хак в виде дополнительного элемента clearfix. - Использовать свойство
display: inline-block;
, для элементовlabel
. Данный подход я использовал ранее, до того как практически во всех браузерах появилась поддержка flexbox. - Для родительского контейнера (в моём случае это
radio-container
) воспользоваться свойствомdisplay: flex;
Я использую третий вариант, flexbox поддерживаться практически во всех браузерах, если вы хотите поддерживать IE, этот подход вам не подойдёт.
Далее нам осталось лишь показать пользователю какой элемент активен на данный момент, сделать это очень просто, но есть один нюанс: ваш элемент input
должен следовать перед элементом label
, иначе css свойство, приведённое ниже, работать не будет.
Для того чтобы выделить активный элемент используем следующий приём:
.radio-container .radio-btn input:checked + label{
background-color: #0082fe;
color: #fff;
}
| .radio-container .radio-btn input:checked + label{ background-color: #0082fe; color: #fff; } |
Эта запись означает, что вложенные стили будут применяться только к элементу label
и только в том случае, если элемент radio
, к которому относится label
, активен в данный момент.
Как видно из записи, активный элемент будет другого цвета и текст будет белым, в моём примере этого достаточно.
Результат
Я добавил ещё немного стилей для более красивого отображения элементов выбора, вот какой результат у меня получился:
Можно немного изменить стили и получить такой результат:
Как видите, вы можете легко изменить внешний вид получившихся кнопок как вам угодно.
Данный приём очень хорошо работает когда у вас есть всего 2-4 варианта выбора, на пример гендерная принадлежность пользователя, выбор из вариантов «Да», «Нет», период оповещения (ежедневно, еженедельно, ежемесячно) и так далее. При больше количестве элементов советую воспользоваться выпадающим списком, это будет и удобнее для пользователя и красивее выглядеть на вашем сайте.
comments powered by HyperComments
: The Field Set element — HTML
HTML-элемент <fieldset>
используется для группировки нескольких элементов управления без веб-форм.
The source for this interactive example is stored in a GitHub repository. If you’d like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Пример выше показывает, как элемент <fieldset>
группирует части HTML-формы, а вложенный элемент <legend>
даёт заголовок для <fieldset>
. Он может иметь несколько атрибутов, самый используемый из них form
, который содержит id
формы <form>
на этой же странице. Этот атрибут позволяет сделать <fieldset>
частью формы <form>
даже если он не находится внутри неё. Также вы можете отключить <fieldset>
и всё его содержимое с помощью атрибута disabled
.
Этот элемент включает в себя глобальные атрибуты (en-US).
disabled
HTML5- Если этот логический атрибут установлен, все элементы управления формой, вложенные в
<fieldset>
будут отключены. Это значит, что их нельзя изменять, но можно отправить через форму<form>
, в отличие от атрибутаdisabled
на элементах управления формой. Они не будут реагировать на браузерные события, такие как клики мышью или события focus. По умолчанию, браузер отображает такие элементы управления в сером цвете. Обратите внимание, что элементы формы внутри элемента<legend>
не будут отключены. form
HTML5- Этот атрибут принимает значение атрибута
id
элемента<form>
, с которой вам нужно связать<fieldset>
, даже если он находится вне формы. name
HTML5- Имя, связанное с группой.
Примечание: Заголовок для устанавливается первым<legend>
внутри него.
Есть несколько особенностей стилизации <fieldset>
.
По умолчанию, значение свойства display
равняется block
, что создаёт блочный контекст форматирования. Если установить значение display
как inline-элементу <fieldset>
, это будет работать как inline-block
, в ином случае, это будет работать как block
. По умолчанию, имеется border 2px groobe вокруг содержимого и небольшой внутренний отступ. Элемент имеет min-inline-size: min-content
по умолчанию.
Если задан <legend>, он будет помещён поверх верхней границы. <legend> сжимается и переносится, также имеет свой контекст форматирования. Значение display
блочное (например, display: inline
работает как block
).
Простой fieldset
Этот пример показывает простой <fieldset>
с <legend>
и единственным элементом управления внутри.
<form action="#">
<fieldset>
<legend>Simple fieldset</legend>
<input type="radio">
<label for="radio">Spirit of radio</label>
</fieldset>
</form>
Отключённый fieldset
Этот пример показывает отключённый <fieldset>
с двумя элементами управления внутри.
<form action="#">
<fieldset disabled>
<legend>Disabled fieldset</legend>
<div>
<label for="name">Name: </label>
<input type="text" value="Chris">
</div>
<div>
<label for="pwd">Archetype: </label>
<input type="password" value="Wookie">
</div>
</fieldset>
</form>
BCD tables only load in the browser
- Другие связанные элементы:
html — Как мне изменить цвет радио кнопок?
Как упомянул Фред, нет способа встроить радио-кнопки в цвет, размер и т.д. Но вы можете использовать псевдоэлементы CSS, чтобы установить самозванца для любой данной радиокнопки и стилизовать его. Касаясь того, что сказал JamieD, о том, как мы можем использовать псевдоэлемент: after, вы можете использовать оба: before и: after для достижения желаемого вида.
Преимущества этого подхода:
- Разработайте свою радио-кнопку, а также добавьте метку для контента.
- Измените цвет внешнего обода и/или отмеченный круг на любой понравившийся вам цвет.
- Придайте ему прозрачный вид с изменениями свойства цвета фона и/или необязательным использованием свойства непрозрачности.
- Масштабируйте размер своей радиокнопки.
- При необходимости добавьте различные свойства теней, таких как CSS.
- Смешайте этот простой трюк CSS/HTML с различными Grid-системами, такими как Bootstrap 3.3.6, чтобы он визуально соответствовал остальным компонентам Bootstrap.
Объяснение короткой демонстрации ниже:
- Установите относительный встроенный блок для каждой радиокнопки
- Скройте родной смысл переключателя, нет способа напрямую его стилизовать.
- Стиль и выравнивание этикетки
- Перестройка CSS-содержимого на псевдоэлементе: before для выполнения двух действий — стилизация внешнего края переключателя и установка первого элемента (слева от содержимого метки). Вы можете узнать основные шаги по псевдоэлементам здесь — http://www.w3schools.com/css/css_pseudo_elements.asp
- Если установлен переключатель, запросите метку для отображения содержимого CSS (выделенная точка в переключателе) впоследствии.
HTML
<div>
<input type="radio" name="ritem" value="ropt1">
<label for="ritema">Option 1</label>
</div>
<div>
<input type="radio" name="ritem" value="ropt2">
<label for="ritemb">Option 2</label>
</div>
CSS
.radio-item {
display: inline-block;
position: relative;
padding: 0 6px;
margin: 10px 0 0;
}
.radio-item input[type='radio'] {
display: none;
}
.radio-item label {
color: #666;
font-weight: normal;
}
.radio-item label:before {
content: " ";
display: inline-block;
position: relative;
top: 5px;
margin: 0 5px 0 0;
width: 20px;
height: 20px;
border-radius: 11px;
border: 2px solid #004c97;
background-color: transparent;
}
.radio-item input[type=radio]:checked + label:after {
border-radius: 11px;
width: 12px;
height: 12px;
position: absolute;
top: 9px;
left: 10px;
content: " ";
display: block;
background: #004c97;
}
A короткая демонстрация чтобы увидеть это в действии
В заключение, JavaScript, изображения или батареи не требуются. Чистый CSS.
Стилизация checkbox и radio на CSS · GitHub
css — Стилизация checkbox и radio на CSS · GitHub
Instantly share code, notes, and snippets.
css — Стилизация checkbox и radio на CSS
label | |
input(type=»checkbox»).checkbox | |
span.checkbox-custom | |
span.label AGB | |
=== | |
.checkbox | |
display: none | |
/* Задаем внешний вид для нашего кастомного чекбокса. Все обязательные свойства прокомментированы, остальные же свойства меняйте по вашему усмотрению */ | |
.checkbox-custom | |
position: relative // Обязательно задаем, чтобы мы могли абсолютным образом позиционировать псевдоэлемент внютри нашего кастомного чекбокса */ | |
width: 20px // Обязательно задаем ширину */ | |
height: 20px // Обязательно задаем высоту */ | |
border: 2px solid #ccc | |
border-radius: 3px | |
.checkbox-custom, | |
.label | |
display: inline-block | |
vertical-align: middle | |
/* Если реальный чекбокс у нас отмечен, то тогда добавляем данный признак и к нашему кастомному чекбоксу */ | |
.checkbox:checked + .checkbox-custom::before | |
content: «» //* Добавляем наш псевдоэлемент */ | |
display: block // Делаем его блочным элементом */ | |
position: absolute //* Позиционируем его абсолютным образом */ | |
/* Задаем расстояние от верхней, правой, нижней и левой границы */ | |
top: 2px | |
right: 2px | |
bottom: 2px | |
left: 2px | |
background: #413548 //* Добавляем фон. Если требуется, можете поставить сюда картинку в виде «галочки», которая будет символизировать, что чекбокс отмечен */ | |
border-radius: 2px | |
**** | |
<label> | |
<input type=»radio» name=»radio-test»> | |
<span></span> | |
<span>Lorem ipsum dolor sit amet, consectetur</span> | |
</label> | |
=== | |
.checkbox, | |
.radio { | |
display: none; | |
} | |
.checkbox-custom, | |
.radio-custom { | |
width: 20px; | |
height: 20px; | |
border: 2px solid #ccc; | |
border-radius: 3px; | |
position: relative; | |
} | |
.checkbox-custom, | |
.radio-custom, | |
.label { | |
display: inline-block; | |
vertical-align: middle; | |
} | |
.checkbox:checked + .checkbox-custom::before, | |
.radio:checked + .radio-custom::before { | |
content: «»; | |
display: block; | |
position: absolute; | |
top: 2px; | |
right: 2px; | |
bottom: 2px; | |
left: 2px; | |
background: #413548; | |
border-radius: 2px; | |
} | |
.radio-custom, | |
.radio:checked + .radio-custom::before { | |
border-radius: 50%; | |
} | |
//https://webcareer.ru/stilizaciya-checkbox-i-radio-na-css.html |
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
Каким образом создается стиль радиокнопки CSS? [Уловки CSS]
Все мы знакомы с флажком HTML и переключателем CSS. Больше всего в них расстраивает то, что мы не можем изменить их внешний вид. Они выглядят по-разному в зависимости от вашей операционной системы и браузера, и мы не можем стилизовать их с помощью CSS.
Это может раздражать большинство дизайнеров, которые хотят сделать эти элементы привлекательными, чтобы они не портили дизайн.В этом уроке я покажу вам, как заставить их выглядеть по-настоящему мило с помощью простого трюка. Давайте копаться!
Будь сильным. Скрыть флажки
Это может показаться нелогичным, но чтобы наши флажки и переключатели выглядели великолепно, мы должны скрыть их и забыть о них! Да, им больше не нужно оставаться здесь, поэтому мы просто применяем простое правило:
.section input [type = "radio"], .section input [type = "checkbox"] { дисплей: нет; }
Но, Мэтью, вы можете сказать, что мы будем делать без них? Не беспокойтесь, мы создадим собственные флажки, с блэкджеком и… ну, давайте просто займемся этим.
Переключатель CSS
Во-первых, это наша разметка:
<раздел>
У нас есть раздел, в котором мы собираемся содержать три переключателя.Мы рассмотрим флажки далее в этом уроке, принцип тот же. Каждый ввод упакован в div с контейнером класса
. Кроме того, каждый вход имеет метку с промежутком в ней.
Важно!
Поскольку мы скрыли входы для радио и флажков, единственный способ получить к ним доступ — использовать тег label. Для правильной работы тег label должен содержать атрибут « for»
с идентификатором соответствующего входа. Если вход имеет идентификатор « radio-1»
, тогда атрибут « for»
также должен быть « radio-1»
.
Вам может быть интересно, почему я заключил текст внутри каждой метки в диапазон:
Поскольку мы собираемся стилизовать радиокнопки с псевдоэлементами « :: before
и» :: after
, нам нужен родительский элемент, на основе которого они могут быть расположены. В данном случае это будет наш лейбл:
.этикетка контейнера { положение: относительное; }
Вот набор стилей, который используется как для флажков, так и для переключателей:
.container span :: before, .container span :: after { содержание: ''; позиция: абсолютная; верх: 0; внизу: 0; маржа: авто; }
Свойства Top и bottom установлены равными нулю и объединены с « margin: auto;"
позволяет нашим элементам располагаться по центру по горизонтали.
Вот как выглядят остальные стили:
.container span.radio:hover { курсор: указатель; } .container span.radio::before { слева: -52px; ширина: 45 пикселей; высота: 25 пикселей; цвет фона: # A8AAC1; радиус границы: 50 пикселей; } .container span.radio::after { слева: -49 пикселей; ширина: 17 пикселей; высота: 17 пикселей; радиус границы: 10 пикселей; цвет фона: # 6C788A; переход: левый 0,25с, цвет фона 0,25с; } input [type = "radio"]: checked + label span.radio::after { слева: -27px; цвет фона: # EBFF43; }
Самая важная часть — это последний набор правил, который, по сути, выполняет весь фокус.Псевдокласс «: checked»
позволяет нам вносить изменения в элементы, когда ввод проверяется. С помощью селектора «+» мы можем выбрать следующий родственный элемент и нацелить наш « span.radio»
, где мы применяем новые правила к псевдоэлементу « :: after»
. В этом случае мы меняем его положение по горизонтали и цвет.
Чтобы переключение было плавным, мы назначаем переход 0,25 секунды левому свойству и цвету фона. Теперь, когда мы нажимаем на переключатель, переключатель перемещается плавно, а не быстро.
Флажки
Если вам нужно создать настраиваемые флажки, метод тот же. Взгляните на стили:
.container span.checkbox :: before { ширина: 27 пикселей; высота: 27 пикселей; цвет фона: #fff; слева: -35px; размер коробки: рамка-рамка; граница: 3px сплошная прозрачная; переход: цвет границы .2s; } .container span.checkbox: hover :: before { граница: 3px solid # F0FF76; } .container span.checkbox :: after { содержание: '\ f00c'; семейство шрифтов: 'FontAwesome'; слева: -31px; верх: 2 пикселя; цвет: прозрачный; переход: цвет.2с; } input [type = "checkbox"]: checked + label span.checkbox :: after { цвет: # 62AFFF; }
Единственное отличие состоит в том, что мы используем значок из семейства FontAwesome в качестве псевдоэлемента « :: after»
. По умолчанию он прозрачный, но когда флажок установлен, значок становится синим.
В стороне
Если вы хотите использовать значок FontAwesome в своем псевдоэлементе, вы должны включить его код в свойство content и указать свойство font-family как « FontAwesome»
.Например:
{ содержание: '\ f00c'; семейство шрифтов: 'FontAwesome'; }
Коду « f00c»
предшествует обратная косая черта, необходимая для экранирования символа Unicode. Юникод можно найти на странице выбранного вами значка:
Окончательный результат
Вот и все. Теперь мы создали полнофункциональные и красивые флажки и переключатели, которые вы можете настроить и использовать в своих собственных проектах. Вы можете просмотреть полный исходный код в демонстрации CodePen:
См. Раздел «Переключатели Pen
и флажки 2» Мэтью Кейна (@matthewcain)
на CodePen.
Видеоуроки
Лучше один раз увидеть, чем несколько раз прочитать. Некоторые люди предпочитают смотреть через плечо профессионалу, поэтому я выбрал 5 лучших (на мой взгляд, безусловно) видеоуроков по созданию пользовательских флажков и переключателей. Надеюсь, это поможет.
HTML5 шаблоны веб-сайтов
Универсальный шаблон CMS — Bootstrap | Шаблон веб-сайта Laravel Framework
Демо | Скачать | Хостинг
Если вы найдете этот учебник полезным или у вас есть какие-либо вопросы, не стесняйтесь делиться своими мыслями в комментариях ниже.Спасибо!
FAQ
Что такое флажок стиля CSS?
Это небольшой интерактивный элемент, который пользователь может переключать, чтобы выбрать один из двух или более вариантов. Иногда его также называют полем выбора или флажком.
Что такое радиокнопка стиля CSS?
Это элемент, с которым пользователь может взаимодействовать, чтобы выбрать один из нескольких вариантов. В отличие от флажка, он позволяет выбрать только один вариант из предложенных.
Почему мне нужно стилизовать флажки и переключатели в CSS?
Да ладно, будет лучше, если интерактивные элементы будут подходить к другим частям дизайна, не так ли? Каждая крошечная деталь может иметь решающее значение для общего вида.
Читайте также
В последний раз: переключатели и флажки пользовательского стиля
Около трех лет назад (2017/2018) я опубликовал коллекцию доступных стилизованных элементов управления формы, которые включали определенные шаблоны разметки для создания настраиваемых стилизованных переключателей и флажков. Эти шаблоны явились кульминацией многих лет моей работы, изучения реализаций других людей и последующего стресс-тестирования их с помощью вспомогательных технологий, которыми я располагал.
В то время наиболее надежным способом стилизации этих элементов управления формы без воссоздания их с нуля с помощью ARIA было визуальное скрытие переключателя или флажка, а затем воссоздание элементов управления с помощью
или < span>
и их псевдоэлементы ( :: до
и :: после
). Потребность в этом подходе была в значительной степени, но не полностью, из-за того, что Internet Explorer и Legacy Edge не обеспечивали наилучшей поддержки для непосредственного стилизации самих элементов HTML
.И если вы вернетесь еще дальше в прошлое, во всех браузерах были препятствия для непосредственной стилизации этих элементов управления.
Нельзя сказать, что в 2018 году нельзя было напрямую стилизовать собственные переключатели и флажки (см. Измененные переключатели) и измененные флажки). Но требовались обходные пути и ограничения стиля, которые все еще существовали из-за несоответствий с Firefox, Internet Explorer и до Chromium Edge.
Теперь (2021 г.), когда поддержка Internet Explorer упала слева и справа, а Edge теперь основан на Chromium, а причуды Firefox устранены, эти ограничения в значительной степени сняты.
Надеюсь, это последний раз, когда я пишу на эту тему.
Что необходимо для изменения стиля радиоприемников и флажков?
Поскольку мы собираемся стилизовать элементы напрямую, ожидаемые шаблоны разметки будут такими же, как если бы вы не применяли индивидуальный стиль. Например:
Необходимый CSS
Существует множество свойств CSS, которые переключатели и флажки будут уважать по умолчанию, но чтобы начать с нуля (что, если вы изменяете стиль этих элементов управления, вероятно, вы все равно хотите), первое, что нам нужно сделать, это очистить их всех стилей по умолчанию.Для этого мы используем свойство Appearance: none
.
Примечание: для этих конкретных компонентов, я не сталкивался с какими-либо непредвиденными проблемами при использовании свойства без префикса . Но, согласно caniuse.com, Webkit по-прежнему требует префикса
-webkit-
. Как правило, лучше перестраховаться, чем сожалеть, так что, хотя и раздражает необходимость иметь как префикс -webkit-appearance
, так и внешний вид
, можно пока оставить его в том же духе.
После появления : не указано
для переключателей и флажков, которые вы собираетесь изменить, вы получите полный контроль над стилем самого элемента и его псевдоэлементов :: before
и :: after
. Но теперь, когда вы взялись за эту задачу, вам необходимо учесть следующее в своем CSS:
- По умолчанию (не отмечен).
- Новое состояние проверки.
- Необязательное неопределенное / «смешанное» состояние (не всегда необходимо, но при необходимости вы захотите его иметь)
- Пользовательское состояние фокуса.
- Стиль фокуса с выбранным состоянием (если предыдущий стиль фокуса не заметен на фоне нового отмеченного стиля - например, темный контур на фоне новой темной заливки, когда элемент управления установлен).
- Отключено (убедитесь, что текст метки продолжает соответствовать необходимым минимальным значениям контрастности!).
- Убедитесь, что стиль слева направо и справа налево (
dir = ltr
,dir = rtl
) не изменился. - Убедитесь, что ваш стиль работает с медиа-запросами, такими как
Вы можете поиграть со следующим переключателем и флажком CodePen.Попробуйте добавить dir = rtl
к содержащим
disabled
. См. Перо
Пользовательская встроенная радиокнопка от Скотта (@scottohara)
на CodePen.
За пределами необходимого CSS и разметки
Может быть, вы думаете, что вам нужно больше, чем то, о чем здесь говорили. Три селектора для стилизации переключателя или флажка? «Пш», - воскликнете вы. «Я испытываю серьезное удовлетворение пользователей, которые нуждаются в добавлении этих рутинных элементов управления для выполнения основных задач в Интернете." Прохладный! Не стесняйтесь добавлять другие общие / презентационные элементы по своему усмотрению.
Например:
Приведенная выше разметка заключила флажок в содержащий элемент
с глупыми именами классов. Например, хотите создать эффект анимации при наведении, фокусировке или активации флажка? Теперь вы можете использовать родственные селекторы CSS (например.g., ~
или +
) и / или некоторый JavaScript, чтобы получить ваш Material Design. Просто не забудьте быть осторожным с z-индексированием, чтобы эти дополнительные элементы
случайно не блокировали событие указателя (например, щелчок, касание) от доступа к элементу управления формы.Просто, что бы вы ни делали, вам не нужно делать такую глупость:
<тип ввода = флажок
tabindex = -1
ария-скрытый = правда
class = визуально-скрытый
>
Название контроля
Вложенные интерактивные элементы, подобные описанным выше, абсолютно не нужны, и в зависимости от используемой вспомогательной технологии флажок «скрытый» может быть обнаружен (например, при построчной навигации с помощью VoiceOver в macOS или с помощью Dragon Naturally Speaking - как недавнее тестирование обнаружило).
Если вы застряли в ситуации, когда вы имеете дело с указанным выше недопустимым вложением флажка в «флажок», вы, вероятно, используете видимость CSS : скрытый
, чтобы полностью скрыть вложенный собственный флажок от вспомогательных технологий, при этом сохраняя ваша нынешняя функциональность.Рефакторинг здесь был бы идеальным, поскольку поставляемый нами CSS - сильное предложение, но не требование для пользователей. Но эй, иногда тебе просто нужно скрыть свою ошибку и надеяться, что никто не заглянет под твой коврик и не заметит все кучи грязи и пыли. Верно?
Заключение и благодарность
На данный момент я вижу очень мало причин продолжать рекомендовать визуально скрытую технику для стилизации переключателей и флажков. Поскольку все современные браузеры могут обрабатывать стили этих элементов управления, визуально скрытый метод имеет слишком много дополнительных подводных камней, хотя и управляемых, о которых нужно знать и учитывать.
Кроме того, я также весьма скептически отношусь к «необходимости» создания настраиваемых переключателей и флажков ARIA. Уровень усилий по созданию этих настраиваемых элементов управления и обеспечению наличия всех необходимых функций выходит далеко за рамки простого обновления CSS. Даже если вам нужно было создать роль ARIA = переключатель
, стили CSS и полагаться на неявный
, неявная функциональность проверила
, это даст вам все, что вам нужно для стилизации собственного флажка в настраиваемый переключатель (третий пример на этой связанной странице).
Обновление 2021-09-25: спасибо Адриану Роселли за напоминание мне, что если я собираюсь напомнить людям не забывать стили для всех необходимых состояний флажков, то я не должен забывать включать неопределенный
/ aria-checked = смешанные
государственных дизайнов. Радиокнопка и флажок CodePen обновлен, чтобы продемонстрировать примеры флажков, использующих неопределенный IDL-атрибут
и aria-checked = mixed
.
Для получения дополнительной информации о стилизации встроенных переключателей и флажков, особенно с использованием метода визуального скрытия, я рекомендую просмотреть следующее:
Создать настраиваемые стили CSS для переключателей и флажков для состояний фокуса и отключения
Инструктор: [0:00] Теперь, когда наши стили оснащены визуальным индикатором на переключателях и флажках, нам нужно добавить стили для их состояния фокуса и отключить штат.
[0:09] Сначала займемся фокусом. Мы сможем объединить эти стили в нашем классе компонентов управления основной формой. Теперь, в то время как наше предыдущее состояние фокуса применяет изменение цвета границы и тень блока, мы хотим убедиться, что существует четкая визуальная разница, особенно для отмеченных радиомодулей и отмеченных флажков, которые также имеют фокус.
[0:31] Чтобы начать нашу прокрутку, мы начнем с определения, когда исходный ввод находится в состоянии фокуса, и мы собираемся использовать тень блока для нашего эффекта.Поскольку тени блока могут быть наслоены, верхний слой, ближайший к элементу, по существу создаст границу 0,5 м, которая создаст визуальное разделение между границей элемента управления и нашим вторым эффектом тени блока, который будет иметь радиус размытия и распространения, и примените наш основной цвет. Посмотрим, как это выглядит.
[1:01] Когда я фокусируюсь на первом радиомодуле, а затем использую стрелку вниз, чтобы сфокусироваться на втором радиомодуле, вы можете видеть, как выглядит этот эффект. Я посмотрю на наш флажок, и вы увидите, что он применяется аналогичным образом.Еще одна приятная вещь, которую мы можем сделать с фокусом, - это изменить цвет метки на основной.
[1:19] Однако из-за способа построения нашей разметки мы не можем использовать соседний родственный селектор, потому что значение метки находится за пределами элемента управления вводом. Вместо этого мы можем использовать восходящий псевдоселектор под названием: focus-within. Мы разместили это в нашем основном компоненте управления формой. : focus-within, примененный к нашей метке, обнаружит это событие focus на собственном вводе и сможет применить дополнительные стили к элементам внутри.
[1:47] В этом случае мы обновим свойство цвета до основного цвета. Когда я сфокусируюсь, вы увидите, что это событие фокусировки теперь позволяет нам обновить цвет метки. На момент записи: focus-within все еще требуется полифил для некоторых старых браузеров, поэтому его следует рассматривать как прогрессивное усовершенствование.
[2:06] Теперь, когда мы добавили стили для фокуса, нам нужно завершить наши стили для отключенного состояния. Для этого нам нужно пересмотреть нашу разметку и добавить дополнительный класс к элементу form-control, то есть form-control с модификатором disabled, и мы добавим его ко всем нашим отключенным элементам управления.
[2:24] Для начала мы создадим правило, когда этот класс также присутствует в элементе управления формой, а затем в элемент управления вводом будет включен наш миксин с отключенным полем. При сохранении вы видите, что это дает нам большую часть пути, за исключением радио, которое отключено и проверено.
[2:42] Поскольку мы использовали box-shadow для создания визуального элемента отмеченного радио, мы должны полностью определить свойство box-shadow в отключенном состоянии. Когда мы обнаружим, что метка имеет класс отключенного элемента управления формой, мы обновим наш box-shadow, чтобы использовать то же значение цвета, которое используется для цвета флажка.Отменить сохранение этого обновления.
[3:04] Наконец, мы будем использовать это значение черного rgba в качестве значения применяемого цвета на этикетке, которое обновляет цвет метки, чтобы служить дополнительным индикатором того, что элемент управления находится в отключенном состоянии.
[3:16] В этом уроке мы создали стиль для состояния фокуса как для радио, так и для флажков. Чтобы гарантировать, что состояние фокуса четко различимо для элемента управления, который был как отмечен, так и в фокусе, мы наложили наши эффекты тени прямоугольника так, чтобы сначала создать вид белой границы, а затем добавили тень прямоугольника, используя наш основной цвет.
[3:38] Мы также узнали, как использовать фокус внутри, чтобы обнаружить событие собственного фокуса внутри метки, чтобы также применить цвет, который повлиял на общий цвет метки. Затем мы добавили класс отключенного элемента управления формой к нашей метке для тех элементов управления, которые были отключены, и использовали его для обновления цвета метки и в элементе управления вводом, чтобы включить наш миксин с отключенным полем.
[4:00] Из-за того, как радиоиндикатор применялся с box-shadow, нам пришлось переопределить box-shadow, чтобы обновить его цвет в отключенном состоянии.
Стилизованные радиокнопки
Детали шаблона
Эти настраиваемые стили переключателей соответствуют одному из двух следующих шаблонов разметки:
1. Визуально скрытые радиоприемники
Разметка узора: визуально скрытый стиль
Контейнер div
служит крючком для укладки, используя position: relative;
, чтобы сохранить абсолютно позиционированные дочерние элементы и псевдоэлементы относительно блока контейнера блока.
Хотя фактическая радиокнопка визуально скрыта от просмотра, она по-прежнему важна для чтения с экрана и сосредоточения внимания пользователя на клавиатуре. Полное скрытие, с дисплеем : нет;
, например, потребует, чтобы все встроенные функции переключателей были переписаны на JavaScript. Разрешение встроенному переключателю продолжать получать фокус гарантирует, что элемент управления формы может опираться на собственную семантику.
Использование стандартного визуально скрытого CSS для скрытия встроенного переключателя за экраном или в виде отдельного пикселя в документе будет означать, что некоторые пользователи программ чтения с экрана могут не найти переключатель.Например, те, кто выполняет поиск касанием или с помощью мыши, когда программа чтения с экрана объявляет, что наведено. Чтобы смягчить это, переключатели были расположены поверх своих аналогов в стиле псевдоэлементов, но при этом остаются визуально скрытыми. Обратите внимание, что NVDA не объявляет о роли переключателя при наведении курсора мыши, независимо от того, был ли он стилизован или нет, если не были изменены настройки NVDA по умолчанию.
Метка Псевдоэлементы
: до и : после
используются для воссоздания переключателя в новом пользовательском стиле.С : до
, выступающей в качестве внешней границы переключателя, и с : после
в качестве визуального индикатора для состояния , проверенное
.
Стиль настраиваемого переключателя передается из состояния элемента управления собственной формы. Состояния переключателей : проверено,
, отключено,
и : focus
будут отражены в пользовательском стиле с помощью родственных селекторов CSS. Например, input: checked ~ label: before {...}
2. Рестайлинговые радиоэлементы
Разметка паттернов: Рестайлинговая радиостанция
<метка>
Ярлык
С помощью этого шаблона разметки радиокнопка изменена, ее собственный стиль полностью удален из-за появления CSS : none
, а затем изменен стиль с использованием box-shadow
s и border
s.
Элемент span
используется для обертывания текстовой метки радиокнопки, чтобы можно было использовать родственный селектор для изменения стиля текста, если радиокнопка отключена.
Обратите внимание: что касается примечания к визуальному дизайну, в IE11 и Firefox до версии 60 есть проблемы с этим методом стилизации. Если вам необходимо поддерживать эти браузеры, этого шаблона может быть недостаточно, и вместо этого следует рассмотреть возможность визуально скрытого метода.
IE11 и Edge могут использовать :: - ms-check
для изменения стиля переключателей и флажков. При использовании этого селектора с префиксом поставщика убедитесь, что стили флажка и переключателя не конфликтуют.
влияет на объявления программы чтения с экрана?
Поскольку собственные переключатели остаются в модели DOM и используются в качестве фокусируемых элементов, которые управляют состоянием их настраиваемой визуализации, нет никаких изменений в том, как средство чтения с экрана объявляет стилизованные переключатели.
Создание радиогрупп со специальными стилями — Блог
Опубликовано
, 20 июля 2020 г.
В предыдущей статье мы показали вам, как создавать стилизованные флажки, сохраняя при этом доступные атрибуты флажков в собственном HTML.В этой статье мы будем использовать тот же подход для создания доступных, стилизованных радиогрупп.
Ссылка на радиогруппы, а не на радиокнопки, является преднамеренной. Радиокнопки по своей природе работают как группа. Один переключатель не имеет значения без хотя бы еще одного переключателя, который соответствует тому же значению атрибута `name`, по сравнению с примером флажка, который не зависит от элементов-близнецов. Определение группы доступным способом — единственная переменная, которую нужно добавить к методу, который мы использовали для флажков в предыдущей статье.
Что делает радиогруппы и кнопки доступными?
Давайте начнем с сопоставления факторов, которые делают радиогруппу доступной и понятной для всех:
- Соответствующие радиокнопки должны быть сгруппированы вместе.
- Радиогруппы должны иметь название, описывающее суть выбора, который находится перед пользователем.
Теперь давайте сопоставим факторы, которые делают доступным единственный переключатель:
- Он должен быть настраиваемым, чтобы пользователи с клавиатурой могли дотянуться до него.
- Он должен иметь различимую индикацию фокуса, чтобы отмечать положение в последовательности фокуса для пользователей клавиатуры.
- Он должен программно выражать свою роль, чтобы вспомогательные технологии могли читать и объявлять его как переключатель.
- Он должен быть правильно помечен, чтобы он был понятен и удобен для пользователей вспомогательных технологий.
- Он должен выражать свое состояние (отмечен / не отмечен).
Реализация на практике
Разметка:
Во-первых, мы хотели бы создать контейнер, который будет группировать радиокнопки.Группирование переключателей помогает пользователям программ чтения с экрана лучше представить себе данные, которые им необходимо заполнить.
Ниже приведены примеры двух возможных вариантов обертывания и маркировки радиогрупп:
Вариант 1: использовать тег