Как изменить стиль radio css
Перейти к содержимому

Как изменить стиль radio css

  • автор:

Как изменить стиль input[type=»radio»]?

Как мне поменять стиль радиокнопок, что бы они выглядели как чебоксы? Нужна кроссбраузерность. Нашла в интернете такой код:

input[type="radio"] < -webkit-appearance:checkbox; /*chrome,safari,opera*/ -moz-appearance:checkbox; /*firebox*/ -ms-appearance:checkbox; /*not currently supported*/ >

Но не работает в IE и опере. На основании нишеизложенного

(document).ready(function() < $("input[type=radio]:checked").parent("label").css(" background-position","0 -21px"); >);
div.boolean br div.boolean>label < display: inline-block; text-align: left; padding: 0; margin: 0 10px 0 0; >input[type="radio"] < visibility: hidden; >label:before< display: inline-block; content: ""; width: 20px; height: 20px; border: 1px solid grey; margin-right: 10px; cursor: pointer; border-radius: 4px; background: url('http://www.dis-ag.com/SiteCollectionDocuments/images/checkbox-sprite.png'); background-size: 100%; >
 

Говорю, html код нельзя менять.
Отслеживать
задан 17 ноя 2015 в 19:52
451 7 7 серебряных знаков 27 27 бронзовых знаков
Для чего вам обманывать пользователя и выдавать радиокнопки за чекбоксы?
17 ноя 2015 в 19:57

Было бы странно, если бы в IE заработало, учитывая комментарий ` /*not currently supported*/`. Придётся вам всё-таки делать чекбоксы и навешивать JS’ом на них обработчики чтобы поведение было аналогично радиокнопкам.

17 ноя 2015 в 21:03

Так не получится, так как я работаю в Битриксе, а там есть радиокнопки — в качестве полей к регистрации.

18 ноя 2015 в 5:46
там наверняка можно указать тип переключателей, какие нужно использовать
18 ноя 2015 в 7:37
только радиокнопки.
18 ноя 2015 в 9:04

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Например через псевдоэлементы + фоновую картинку:

input[type="radio"] + label < display: inline-block; text-align: right; padding: 0; margin: 0 10px 0 0; >input[type="radio"] < visibility: hidden; >input[type="radio"] + label:after < display: inline-block; content: ""; width: 20px; height: 20px; border: 1px solid grey; margin-left: 10px; cursor: pointer; border-radius: 4px; background: url('http://www.dis-ag.com/SiteCollectionDocuments/images/checkbox-sprite.png'); background-size: 100%; >input[type="radio"]:checked + label:after
   

UPD

$(function()< $("input[type=radio]:checked").parent("label").addClass('active'); $("input[type=radio]").on('change', function(e)< $(this).closest('.fields').find('label').removeClass('active'); $(this).closest('label').addClass('active'); >); >);
div.boolean br < display:none; >div.boolean > label < display: inline-block; text-align: left; padding: 0; margin: 0 10px 0 0; >input[type="radio"] < visibility: hidden; >label:before < display: inline-block; content: ""; width: 20px; height: 20px; border: 1px solid grey; margin-right: 10px; cursor: pointer; border-radius: 4px; background: url('http://www.dis-ag.com/SiteCollectionDocuments/images/checkbox-sprite.png'); /* скопировать себе на сервер */ background-size: 100%; >label.active:before
 

Отслеживать
ответ дан 19 ноя 2015 в 12:30
5,916 1 1 золотой знак 15 15 серебряных знаков 35 35 бронзовых знаков
СПасибо, но это не то.
24 ноя 2015 в 7:04
html нельзя изменять html нельзя изменять


24 ноя 2015 в 7:10
24 ноя 2015 в 7:15
@RRR Тогда вам только js в помощь
24 ноя 2015 в 7:18
$( document ).ready(function() < if($("input[type=radio]").attr("checked") == 'checked') < $("input[type=radio]").parent("label").css(" background-position","0 -21px"); >>); но не получается.
24 ноя 2015 в 8:01

  • html
  • css
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Стилизация переключателей (радио-кнопок) в CSS

Радио-кнопки подразумевают, что вы выбираете один элемент из некоторого количества, поэтому элемент получил название переключателя в отличие от флажков, которые подразумевают множественный выбор. Браузеры довольно неплохо отображают радиокнопки по умолчанию.

Выбор 1 Выбор 2 Выбор 2

Однако, вам может понадобится как-то стилизовать эти элементы для своего сайта.

Как правило, стилизация радио-кнопок основана на использовании такого элемента, как label , клик на котором приводит к выбору определенного переключателя, с которым связан с помощью атрибута for, в котором указывается id переключателя. Второй вариант — это когда в разметке радио-переключатель находится внутри элемента label .

Простой пример

See the Pen CSS Radio Buttons by Tristan White (@triss90) on CodePen.18892

Радио-кнопки, похожие на флажки

Если вы хотите стилизовать переключатели в виде флажков — пример от Andrew Vereshchak — как раз то, что нужно.

Переключатели с изменением цвета и иконки

Здесь автор Andrew использовал абсолютное позиционирование для отдельного блока с классом .switch, в который входят 2 и . Также здесь не обошлось без псевдоэлемента ::after и псевдокласса :checked.

Разноцветные радио-кнопки

В этом примере от Dronca Raul каждый переключатель имеет свой цвет и галочку внутри при щелчке на элементе.

See the Pen Custom Radio Buttons by Dronca Raul (@rauldronca) on CodePen.18892

Используем переключатели для выбора цвета

В этом примере тема цветов для переключателей продолжается. Здесь мы не только прячем элемент с помощью CSS, но и изменяем фоновый цвет элемента с id=»output» на тот, который указан в качестве value для и фона для span-элемента, вло женного в .

Переключатели Да-Нет-Возможно

Еще одно цветовое решение от Matthew Blode.

See the Pen Flat Radio — Yes/No by Matthew Blode (@mblode) on CodePen.18892

Трехмерный переключатель от Jon Kantner

See the Pen Radio Tube by Jon Kantner (@jkantner) on CodePen.0

Переключатель макета

Этот пример от Naoya очень удобен для демонстрации макетов с разной шириной. Интересно, что радио-кнопки, а точнее заменяющие их элементы label выглядят как . ссылки с подчеркиванием выбранного (псевдокласс :checked) в данный момент элемента.

Стилизация Radio Button

Несколько примеров изменения вида радио кнопок на чистом CSS. Единственное неудобство метода в том, что приходится указывать уникальные id.

Стандартные элементы

Понадобятся всего два изображения, которые можно объединить в спрайт. Состояния заблокированного элемента и при наведении можно сделать CSS фильтрами.

 
.form_radio < margin-bottom: 10px; >.form_radio input[type=radio] < display: none; >.form_radio label < display: inline-block; cursor: pointer; position: relative; padding-left: 25px; margin-right: 0; line-height: 18px; user-select: none; >.form_radio label:before < content: ""; display: inline-block; width: 17px; height: 18px; position: absolute; left: 0; bottom: 1px; background: url(/img/radio-1.png) 0 0 no-repeat; >/* Checked */ .form_radio input[type=radio]:checked + label:before < background: url(/img/radio-2.png) 0 0 no-repeat; >/* Hover */ .form_radio label:hover:before < filter: brightness(120%); >/* Disabled */ .form_radio input[type=radio]:disabled + label:before

Radio в виде кнопок

 
.form_radio_btn < display: inline-block; margin-right: 10px; >.form_radio_btn input[type=radio] < display: none; >.form_radio_btn label < display: inline-block; cursor: pointer; padding: 0px 15px; line-height: 34px; border: 1px solid #999; border-radius: 6px; user-select: none; >/* Checked */ .form_radio_btn input[type=radio]:checked + label < background: #ffe0a6; >/* Hover */ .form_radio_btn label:hover < color: #666; >/* Disabled */ .form_radio_btn input[type=radio]:disabled + label

Группа кнопок

 
.form_radio_group < display: inline-block; overflow: hidden; >.form_radio_group-item < display: inline-block; float: left; >.form_radio_group input[type=radio] < display: none; >.form_radio_group label < display: inline-block; cursor: pointer; padding: 0px 15px; line-height: 34px; border: 1px solid #999; border-right: none; user-select: none; >.form_radio_group .form_radio_group-item:first-child label < border-radius: 6px 0 0 6px; >.form_radio_group .form_radio_group-item:last-child label < border-radius: 0 6px 6px 0; border-right: 1px solid #999; >/* Checked */ .form_radio_group input[type=radio]:checked + label < background: #ffe0a6; >/* Hover */ .form_radio_group label:hover < color: #666; >/* Disabled */ .form_radio_group input[type=radio]:disabled + label

Переключатель

 
.form_toggle < display: inline-block; overflow: hidden; >.form_toggle-item < float: left; display: inline-block; >.form_toggle-item input[type=radio] < display: none; >.form_toggle-item label < display: inline-block; padding: 0px 15px; line-height: 34px; border: 1px solid #999; border-right: none; cursor: pointer; user-select: none; >.form_toggle .item-1 label < border-radius: 6px 0 0 6px; >.form_toggle .item-2 label < border-radius: 0 6px 6px 0; border-right: 1px solid #999; >/* Checked */ .form_toggle .item-1 input[type=radio]:checked + label < background: #ffc5c5; >.form_toggle .item-2 input[type=radio]:checked + label

Как изменить стиль radio css

Атрибут type тега со значением radio обычно используется для создания группы радиокнопок (переключателей), описывающих набор взаимосвязанных параметров. Одновременно пользователь может выбрать лишь одну радиокнопку из предложенных. Радиокнопки обычно отображаются как небольшие кружки, которые заполняются или подсвечиваются при наведении.

input type="radio" id="radioButton" /> 

Исходный код к данному интерактивному примеру находиться на GitHub репозитории. Если вы желаете внести свой вклад в проект интерактивных примеров, то склонируйте удалённый репозиторий https://github.com/mdn/interactive-examples и отправьте нам запрос на включение сделанных вами изменений «pull request».

Радиокнопки называются так потому, что выглядят и функционируют в схожей манере с кнопками старомодных радиоприёмников, подобных представленному ниже.

Shows what radio buttons looked like in the olden days.

Примечание: Чекбоксы (en-US) похожи на радиокнопки, но с одним важным отличием: радиокнопки предназначены для выбора одного значения из предложенных, в то время как чекбоксы позволяют «включать» и «выключать» значения. Если существует несколько элементов управления, то с помощью радиокнопок пользователь сможет выбрать лишь один из них, а чекбоксы позволят выбрать несколько значений одновременно.

Value Строка DOM отображающая значение радиокнопки
События change (en-US) и input (en-US)
Универсальные атрибуты checked
Атрибуты IDL checked и value
Методы select() (en-US)

Атрибут value

Атрибут value — это строка DOM , содержащая значение радиокнопки. Это значение никогда не показывается пользователю его веб-браузером. Атрибут value используется для того, чтобы точно определить какая из радиокнопок была выбрана пользователем.

Создание группы радиокнопок

Группа радиокнопок определяется путём присвоения каждой радиокнопке в данной группе одного и того же значения атрибута ( name ). Выбор любой радиокнопки в этой группе автоматически отменяет выбор другой радиокнопки в той же группе.

Вы можете создать любое количество групп радиокнопок, если каждой из этих групп будет присвоено своё уникальное значение атрибута name .

Например, если в вашей форме необходимо запросить предпочитаемый способ контакта с пользователем, то вы можете создать три радиокнопки с name= «contact» , но с разными value = «email» , value = «phone» и value = «mail» соответственно. Пользователь не видит атрибуты name и value (если только вы не добавляете код для их отображения).

HTML будет выглядеть следующим образом:

form> p>Please select your preferred contact method:p> div> input type="radio" id="contactChoice1" name="contact" value="email" /> label for="contactChoice1">Emaillabel> input type="radio" id="contactChoice2" name="contact" value="phone" /> label for="contactChoice2">Phonelabel> input type="radio" id="contactChoice3" name="contact" value="mail" /> label for="contactChoice3">Maillabel> div> div> button type="submit">Submitbutton> div> form> 

Здесь вы видите три радиокнопки, каждая из которых имеет атрибут name со значением «contact» и уникальный атрибут value , который однозначно идентифицирует эту радиокнопку в данной группе. Каждой радиокнопке присвоен уникальный id , связанный с тегом через атрибут for для установления связи между конкретной меткой и конкретной радиокнопкой.

Вы можете опробовать этот код здесь:

Представление данных группы радиокнопок

Когда представленная выше форма отправляется на сервер с информацией о выбранной радиокнопке, то её данные включают запись в виде «contact=name». Например, если пользователь кликает на радиокнопку «Phone», а затем отправляет форму на сервер, данные формы будут включать в себя строку «contact=phone» .

Если вы пренебрежёте атрибутом value в вашем HTML, то отправленные данные просто присвоят данной группе значение «on» . То есть, если пользователь кликнет на радиокнопку «Phone» и отправит форму, итоговые данные отобразятся как «contact=on» и будут абсолютно бесполезны. Поэтому никогда не забывайте указывать атрибут value !

Примечание: Если в отправленной форме не была выбрана ни одна радиокнопка, то группа радиокнопок вообще не будет включать в себя никакие данные, так как отсутствуют значения для отправки.

Поскольку отправлять пустую форму в большинстве случаев не имеет никакого смысла, то разумно оставлять одну радиокнопку активированной по умолчанию с помощью атрибута «checked» . Смотрите здесь Selecting a radio button by default.

Давайте добавим немного кода в наш пример для того, чтобы изучить данные, полученные из этой формы. HTML изменяется путём добавления блока для вывода данных формы.

form> p>Please select your preferred contact method:p> div> input type="radio" id="contactChoice1" name="contact" value="email" /> label for="contactChoice1">Emaillabel> input type="radio" id="contactChoice2" name="contact" value="phone" /> label for="contactChoice2">Phonelabel> input type="radio" id="contactChoice3" name="contact" value="mail" /> label for="contactChoice3">Maillabel> div> div> button type="submit">Submitbutton> div> form> pre id="log">pre> 

Затем добавим немного JavaScript. Установим обработчик события submit (en-US) , которая будет отправляться при клике пользователя на кнопку «Отправить»:

var form = document.querySelector("form"); var log = document.querySelector("#log"); form.addEventListener( "submit", function (event)  var data = new FormData(form); var output = ""; for (const entry of data)  output = entry[0] + " token operator">+ entry[1] + "\r"; > log.innerText = output; event.preventDefault(); >, false, ); 

Опробуйте этот пример и убедитесь, что для группы радиокнопок «contact» будет только один результат.

Использование радиокнопок

Мы уже осветили основные моменты работы с радиокнопками выше. Давайте рассмотрим другие распространённые функции и методы, связанные с использованием радиокнопок, о которых вам нужно знать.

Выбор радиокнопки по умолчанию

Чтобы установить радиокнопку как выбранную по умолчанию, вам необходимо подключить атрибут checked , как показано ниже в немного изменённой версии предыдущего примера.

form> p>Please select your preferred contact method:p> div> input type="radio" id="contactChoice1" name="contact" value="email" checked /> label for="contactChoice1">Emaillabel> input type="radio" id="contactChoice2" name="contact" value="phone" /> label for="contactChoice2">Phonelabel> input type="radio" id="contactChoice3" name="contact" value="mail" /> label for="contactChoice3">Maillabel> div> div> button type="submit">Submitbutton> div> form> 

В данном случае первая радиокнопка будет выбрана по умолчанию.

Примечание: Если вы устанавливаете атрибут checked более чем на одну кнопку, то стоит иметь в виду, что каждый последующий атрибут checked отменяет предыдущий, то есть как отмеченная будет выбрана последняя радиокнопка с атрибутом checked . Это происходит потому, что в каждой группе радиокнопок одновременно может быть выбрана только одна кнопка, и браузер автоматически отменяет другие выбранные до этого радиокнопки.

Providing a bigger hit area for your radio buttons

Валидация формы

Радиокнопки не участвуют в проверке ограничений, так как у них нет реальных значений для ограничения.

Установка стилей радиокнопок

Следующий пример отображает немного более проработанную версию примера, который мы использовали на протяжении всей статьи, с некоторыми дополнительными стилями и с лучшей семантикой, установленной с помощью специализированных элементов.

HTML будет выглядеть следующим образом:

form> fieldset> legend>Please select your preferred contact method:legend> div> input type="radio" id="contactChoice1" name="contact" value="email" checked /> label for="contactChoice1">Emaillabel> input type="radio" id="contactChoice2" name="contact" value="phone" /> label for="contactChoice2">Phonelabel> input type="radio" id="contactChoice3" name="contact" value="mail" /> label for="contactChoice3">Maillabel> div> div> button type="submit">Submitbutton> div> fieldset> form> 

CSS будет выглядеть так:

html  font-family: sans-serif; > div:first-of-type  display: flex; align-items: flex-start; margin-bottom: 5px; > label  margin-right: 15px; line-height: 32px; > input  -webkit-appearance: none; -moz-appearance: none; appearance: none; border-radius: 50%; width: 16px; height: 16px; border: 2px solid #999; transition: 0.2s all linear; outline: none; margin-right: 5px; position: relative; top: 4px; > input:checked  border: 6px solid black; > button, legend  color: white; background-color: black; padding: 5px 10px; border-radius: 0; border: 0; font-size: 14px; > button:hover, button:focus  color: #999; > button:active  background-color: white; color: black; outline: 1px solid black; > 

Самым примечательным здесь является использование свойства appearance с использованием префиксов некоторых браузеров. По умолчанию радиокнопки (и чекбоксы) уже имеют собственные стили в каждой операционной системе. Придав свойству appearance значение none , вы можете отменить все «родные» настройки стилей операционной системы и создать свои собственные. Здесь мы использовали свойства border и border-radius , а также свойство transition для создания хорошо анимированного выбора радиокнопок. Заметьте также, что псевдокласс :checked используется для указания стилей внешнего вида кнопок при их выборе.

Стоит иметь в виду, что свойство appearance неплохо работает для создания простых стилей, но имеет тенденцию вести себя несколько непоследовательно в некоторых браузерах и полностью не работает в Internet Explorer. Тщательно проверяйте как работает ваш сайт в каждом браузере!

Обратите внимание, что при клике на радиокнопку, на предыдущей выбранной кнопке появляется мягкий эффект угасания. Кроме того, стиль и окраска легенды и кнопки «Submit» имеет сильный контраст с остальным текстом. Возможно, это не совсем тот эффект, который вы хотели бы видеть в своём реальном веб-приложении, но этот пример хорошо отображает возможности CSS.

Спецификации

Specification
HTML Standard
# radio-button-state-(type=radio)

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • and the HTMLInputElement (en-US) interface that implements it.
  • RadioNodeList : the interface that describes a list of radio buttons

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *