Доброго времени суток, любители веб-разработки и мои дорогие подписчики. Сегодняшняя статья будет посвящена разбору Bootstrap radiobutton.
Я во всех подробностях расскажу вам, что это за кнопки и для чего их обычно используют в пользовательском интерфейсе, перечислю все способы их создания, объясню роль каждого ключевого слова в коде и конечно же для наглядности приведу в пример несколько небольших приложений. Ну что ж, приступим к работе!
Что за странные кнопки и зачем они нужны?
Давайте вспомним те ситуации, когда при установке какого-либо программного продукта вам нужно выбрать сам способ установки. Из предложенных вариантов вы выбираете один наиболее подходящий и отмечаете его, нажав на круг слева от описания способа. Область круга закрашивается.
Теперь вспомните другую ситуацию. При посещении некоторых сайтов перед вами всплывает окошко с опросом, где вам необходимо указать свой пол и возраст. Там из предложенной однотипной группы вариантов вы выбираете один подходящий ответ.
Все это и является radio button-ами. Таким образом, радиокнопка – это особый вид кнопки, которая создается и функционирует в единственном экземпляре или (в основном) внутри определённой группы похожих элементов, позволяя при этом выбрать один единственный вариант ответа.
Варианты создания Radio Buttons
Во фреймворке Bootstrap данный вид кнопок вошел в раздел Input groups. Все элементы данной группы расширяют возможности форм и обязательно создаются внутри непарного тега <input>.
Radio Buttons можно реализовать несколькими способами:
- В виде кнопок, используя класс .btn- group;
- В привычном виде при помощи класса .form- check;
- Внутри класса .input-group.
При этом отличаться они будут только внешним видом, а вот сама реализация инструмента в коде будет практически идентичной.
Стоит также сразу сказать, что при выборе определенного варианта у отмеченного radiobutton-а появляется атрибут «checked», который определяет текущее состояние объекта. Он функционирует так же, как и атрибут «selected» в списках, известных под названием Select List.
Radiobuttons в виде кнопок
Ну а теперь пришло время рассмотреть первый пример. В своем приложении я создал несколько описываемых элементов, принимающих вид обычных кнопок.
Запомните! Состояние «checked» будет обновляться только при выполнении сложного события «click». Если же необходимо выбрать другой метод обновления, то к классам тега <label> стоит дописать .active.
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 | <!DOCTYPE html> <html lang="en"> <head> <title>Радиобаттоны в виде обычных кнопок</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="btn-group" data-toggle="buttons"> <label class="btn btn-warning active"> <input type="radio" name="radioOption" id="Value1" autocomplete="off" checked>Вариант 1 </label> <label class="btn btn-warning"> <input type="radio" name="radioOption" id="Value2" autocomplete="off"> Вариант 2 </label> <label class="btn btn-warning"> <input type="radio" name="radioOption" id="Value3" autocomplete="off"> Вариант 3 </label> </div> </div> </body> </html> |
Использование привычного класса form-check
В этом приложении я создал четыре кнопки стандартного вида и изменил цвет текста при помощи css. Обратите внимание на четвертый вариант ответа. Он недоступен для выбора. Такой прием стал возможным из-за указания ключевого слова и одноименного класса «disabled».
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 | <!DOCTYPE html> <html lang="en"> <head> <title>Стандартный вид</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <style> h2 {color: #191970;} label { color: #6A5ACD;} </style> </head> <body> <div class="container"> <h2>Чем вы планируете заняться сегодня вечером?</h2> <div class="form-check"> <label class="form-check-label"> <input class="form-check-input" type="radio" name="radioOptions" id="radioOption1" value="option1" checked> Уже запланировал(а) встречу с друзьями. Будем веселиться! </label> </div> <div class="form-check"> <label class="form-check-label"> <input class="form-check-input" type="radio" name="radioOptions" id="radioOption2" value="option2"> Займусь самообразованием. </label> </div> <div class="form-check"> <label class="form-check-label"> <input class="form-check-input" type="radio" name="radioOptions" id="radioOption3" value="option3"> Устрою себе отдых. Скорее всего посмотрю фильм или прочту книгу. </label> </div> <div class="form-check disabled"> <label class="form-check-label"> <input class="form-check-input" type="radio" name="radioOptions" id="radioOption4" value="option4" disabled> Вечер прошел и я уже лег спать. </label> </div> </div> </body> </html> |
Если же вам необходимо варианты ответа разместить в одну строку, то этого можно добиться с помощью класса .form-check-inline в элементе <label> и удалением блоков
<div class="form-check"> … </div>
или же простым размещением всех input-ов c label-ами в одном таком div-е.
Работа с группой инпутов
Некоторые заказчики требуют оформление форм с помощью сгруппированных элементов. Это выглядит следующим образом: одна часть объекта – это кнопка или иконка, а вторая – текстовое поле. При этом они могут смещаться или меняться местами.
В примере я реализовал подобный прием с радиокнопкой и текстовым полем.
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 | <!DOCTYPE html> <html lang="en"> <head> <title>Стандартный вид</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <h2>Вы согласны подписаться на мой блог?</h2> <div class="input-group"> <span class="input-group-addon"> <input type="radio"> </span> <input type="text" class="form-control" value="Да, я согласен(на)."> </div> </div> </body> </html> |
Надеюсь, текущая публикация была полезной. Жду вас в сообществе моих подписчиков. Не забывайте делиться ссылками на интересные статьи с коллегами и друзьями. До встречи! Пока-пока!
С уважением, Роман Чуешов
Спасибо за интересную статью.
Пожалуйста, Александр.
Как же тебя жёстко наебали с дизайном сайта!
Добрый день! Меня зовут Антон.
Меня заинтересовал ваш блог romanchueshov.ru.
Я готов за него предложить 15 000 рублей, исходя из предварительной оценки. По факту изучения статистики, возможно, получится пересмотреть предложение в большую строну. Если интересно мое предложение — жду вашего ответа.