Яндекс.Метрика

Дизайн-журнал №1. Актуальная информация для дизайнеров, веб дизайнеров, программистов и разработчиков сайтов.

Необычные переключатели-флажки и радиокнопки с использованием только CSS3

5 марта 2015 | Опубликовано в css | Нет комментариев »

Можно задавать стили элементам разными способами при помощи CSS. Но с элементами форм все не так просто. Легко задать стили с помощью CSS текстовым полям ввода, а для переключателей-флажков и радиокнопок сделать это очень сложно. В этом уроке мы покажем, каким способом можно задать стили этим элементам и сделать их привлекательными, используя только CSS.

 

 


Демонстрация работыСкачать исходный код

Основы 

Хорошей идеей для задания стилей переключателям-флажкам, радиокнопкам и выпадающим меню является обращение к их подписи или тегу span.

Тогда мы сможем использовать псевдоклассы для удобного задания стилей.

Этот способ работает во всех современных браузерах, таких как Internet Explorer, Firefox, Opera и Chrome.

Чем можно воспользоваться 

Так чем же можно воспользоваться, чтобы создать нужные эффекты? Мы можем использовать псевдоклассы :after, :before, чтобы не пришлось добавлять еще больше  кода HTML. А для радиокнопок и переключателей-флажков можно использовать псевдокласс :checked. Еще можно использовать и другие псевдоклассы, такие как :hover и :active.

Используя эти псевдоклассы можно создать очень интересные и неповторимые элементы форм.

Начнем 

Для начала давайте создадим несколько переключателей-флажков и радиокнопок. Мы создадим по два вида этих элементов форм: один маленький и другой большой. Но кроме элементов ввода с типами, идентификаторами, именами и классами нам понадобится подпись, расположенная после каждого элемента ввода. После это мы воспользуемся атрибутом for для того, чтобы связать каждую подпись с соответствующим элементом ввода. Код HTML будет таким:

<div>
		<label>Checkbox Small</label>
		<input type="checkbox" id="checkbox-1-1" class="regular-checkbox" />
		<nput type="checkbox" id="checkbox-1-2" class="regular-checkbox" />
		<input type="checkbox" id="checkbox-1-3" class="regular-checkbox" />
		<input type="checkbox" id="checkbox-1-4" class="regular-checkbox" />
	</div>
	<div>
		<label>Checkbox Big</label>
		<input type="checkbox" id="checkbox-2-1" class="regular-checkbox big-checkbox" />
		<input type="checkbox" id="checkbox-2-2" class="regular-checkbox big-checkbox" />
		<input type="checkbox" id="checkbox-2-3" class="regular-checkbox big-checkbox" />
		<input type="checkbox" id="checkbox-2-4" class="regular-checkbox big-checkbox" />
	</div>
	<div>
		<label>Radio Small</label>
		<div class="button-holder">
			<input type="radio" id="radio-1-1" name="radio-1-set" class="regular-radio" checked />
			<input type="radio" id="radio-1-2" name="radio-1-set" class="regular-radio" />
			<input type="radio" id="radio-1-3" name="radio-1-set" class="regular-radio" />
			<input type="radio" id="radio-1-4" name="radio-1-set" class="regular-radio" />
		</div>
	</div>
	<div>
		<label class="radio-1">Radio Big</label>
		<div class="button-holder">
			<input type="radio" id="radio-2-1" name="radio-2-set" class="regular-radio big-radio" />
			<input type="radio" id="radio-2-2" name="radio-2-set" class="regular-radio big-radio" />
			<input type="radio" id="radio-2-3" name="radio-2-set" class="regular-radio big-radio" checked />
			<input type="radio" id="radio-2-4" name="radio-2-set" class="regular-radio big-radio" />
			<input type="radio" id="radio-2-5" name="radio-2-set" class="regular-radio big-radio" />
		</div>
	</div>

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

.regular-checkbox + label { }

И зададим самим переключателям-флажкам и радиокнопкам свойство display: none;, чтобы они не отображались.

Теперь зададим стили маленькому переключателю-флажку. Добавим ему тени блока и границы:

.regular-checkbox {
	-webkit-appearance: none;
	background-color: #fafafa;
	border: 1px solid #cacece;
	box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px -15px 10px -12px rgba(0,0,0,0.05);
	padding: 9px;
	border-radius: 3px;
	display: inline-block;
	position: relative;
}

После этого зададим стили для активного состояния, когда пользователь нажимает на переключатель-флажок, и для состояния, когда переключатель-флажок установлен:

.regular-checkbox:active, .regular-checkbox:checked:active {
	box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px 1px 3px rgba(0,0,0,0.1);
}
.regular-checkbox:checked {
	background-color: #e9ecee;
	border: 1px solid #adb8c0;
	box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px -15px 10px -12px rgba(0,0,0,0.05), inset 15px 10px -12px rgba(255,255,255,0.1);
	color: #99a1a7;
}

Затем мы зададим стили для псевдокласса :after. В них будет находится галочка для состояния, когда переключатель-флажок установлен, которую мы создадим с помощью свойства content:

.regular-checkbox:checked:after {
	content: '\2714';
	font-size: 14px;
	position: absolute;
	top: 0px;
	left: 3px;
	color: #99a1a7;
}

Далее мы просто изменим размеры для больших переключателей-флажков:

.big-checkbox {
	padding: 18px;
}
.big-checkbox:checked:after {
	font-size: 28px;
	left: 6px;
}

У радиокнопок все примерно так же, только в этот раз закруглим углы и используем отдельный элемент, а не свойство content, для выбранной радиокнопки:

.regular-radio {
	-webkit-appearance: none;
	background-color: #fafafa;
	border: 1px solid #cacece;
	box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px -15px 10px -12px rgba(0,0,0,0.05);
	padding: 9px;
	border-radius: 50px;
	display: inline-block;
	position: relative;
}

.regular-radio:checked:after {
	content: ' ';
	width: 12px;
	height: 12px;
	border-radius: 50px;
	position: absolute;
	top: 3px;
	background: #99a1a7;
	box-shadow: inset 0px 0px 10px rgba(0,0,0,0.3);
	text-shadow: 0px;
	left: 3px;
	font-size: 32px;
}

.regular-radio:checked {
	background-color: #e9ecee;
	color: #99a1a7;
	border: 1px solid #adb8c0;
	box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px -15px 10px -12px rgba(0,0,0,0.05), inset 15px 10px -12px rgba(255,255,255,0.1), inset 0px 0px 10px rgba(0,0,0,0.1);
}

.regular-radio:active, .regular-radio:checked:active {
	box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px 1px 3px rgba(0,0,0,0.1);
}

.big-radio {
	padding: 16px;
}
.big-radio:checked:after {
	width: 24px;
	height: 24px;
	left: 4px;
	top: 4px;
}

Вот и все! Можете посмотреть демонстрацию работы или скачать исходный код. Надеемся, вам понравился этот урок.

Автор урока Johnny Simpson

Перевод — Дежурка

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




Коментарии запрещены.