Какой рейтинг вас больше интересует?
|
Стильные кнопки-переключатели при помощи CSS32014-01-26 23:24:34 (читать в оригинале)Новые свойства CSS3 дают огромные возможности для творчества и полета фантазии. Особенно нравится создание элементов пользовательского интерфейса, таких как кнопки, переключатели и тому подобное. В этой статье покажу вам, как создать кнопку-переключатель при помощи CSS3, без JavaScript. Скачать исходник :[isnt-logged]Вы не можете скачивать файлы с нашего сайта ,рекомендуем Вам css3buttonswitches.zip (211.66 Kb)[/is-logged] Будем использовать бокс-модель где Код: [width] = [element-width] + [padding] + [borders]. Я активировал её при помощи следующего кода: Код: *,О "Checkbox Hack"- позволяет нам иметь обработчик переключателя на чистом CSS. Он основывается на чекбоксе (который либо отмечен, либо неотмечен), псевдо-селекторе :checked, и родственном селекторе (~ или +). Если вкратце, то его можно описать так: "если чекбокс отмечен, то следующий элемент X ведет себя определенным заранее образом". Раньше для таких целей использовали чекбокс с ID и тегом label, c атрибутом "for", ссылающимся на ID чекбокса. Этот метод позволял скрыть чекбокс и переключать его, нажав на label. Единственная проблема с этим подходом это то, что мобильный Safari не поддерживает его. Поэтому мы будем использовать другой способ: делаем чекбокс невидимым, устанавливаем его выше других элементов (z-index:100), в нашем случае выше label, и затем когда вы кликаете на тег label, то на самом деле вы отмечаете чекбокс! Код выглядит следующим образом: Код: .switch input {Эти 12 строк CSS будут использоваться во всех последующих примерах, без изменений. Пример 1 1.Давайте начнем с красивой небольшой кнопки, с небольшим горящим индикатором, когда она отмечена. Код: <div class="switch">Элемент .switch - это наш контейнер. Внутри этого элемента находится тег input и тег label. Для тега input достаточно указать только тип checkbox (ID, name не нужны). Последний элемент может быть каким угодно (ссылкой, div-ом, span-ом, label и т.д.). Я использую label по старой привычке, потому что раньше использовал старый хак для чекбоксов, для которого необходим был тег label. 2.Мы зададим нашей кнопке размер, установив ширину и высоту контейнера. Убедитесь, что ширина и высота равны, иначе ваша кнопка не будет круглой. Помните, что мы прячем чекбокс при помощи CSS-кода, приведенного в начале этой статьи. Код: .switch {3.Затем зададим стили для тега label. Прежде всего, установим его размеры равные размерам его родителя (контейнер). Затем, зададим ему относительное позиционирование для того, чтобы добавить позже некоторые псевдо-элементы. Код: .switch label {4.Затем, при помощи псевдо-элемента :after добавим кнопке реалистичности, нарисуем круглую рамку, добавим градиент и тени. Код: .switch label:after {5.Теперь добавим индикатор состояния кнопки. Это будет маленький круг, размещенный в середине кнопки. Код: .switch label:before {Итак, теперь у нас есть симпатичная кнопка. Давайте разбираться с отмеченным состоянием кнопки. Когда вы нажимаете на контейнер, вы на самом деле нажимаете на невидимый чекбокс, который находится над тегом label. Если вы отметили чекбокс, это означает, что вы можете использовать селектор :checked и родственный селектор. 6.Таким образом, когда кнопка включена, мы изменим цвет фона индикатора (псевдо-элемент :before), а также фон кнопки. Код: .switch input:checked ~ label { /* Button */ Пример 2 В этом примере мы сделаем переключатель, похожий на те, которые используются в каждом доме для включения\выключения света. 1.Разметка такая же, как и в первом примере: контейнер, чекбокс и этикетка: Код: <div class="switch">2.Начнем с установки размера нашей кнопки. Код: .switch {3.В этом примере используем множество теней для блока, чтобы кнопка хорошо выглядела. Давайте добавим также мягкие цвета фона и закругленные углы, чтобы все это выглядело еще мягче: Код: .switch label {4.Теперь давайте добавим псевдо-элементы. Первый из них предназначен для создания корпуса, второй для имитации переключения. Давайте начнем с корпуса: Код: .switch label:after {5.Второй более интересен, так как у нас есть только один элемент для создания двух состояний. Используем для этого box-shadow! Код: .switch label:before {6.В этом примере только центральная часть (которая является тегом label) будет изменяться, когда мы щелкнем по кнопке. И мы создали этот эффект при помощи box-shadow: Код: .switch input:checked ~ label { /* Button */Пример 3 Давайте попробуем создать пример еще круче. Он взят из прекрасного дизайна от талантливого Piotr Kwiatkowski. 1.Для этого переключателя, нам нужен будет дополнительный элемент. Используем для этой цели тег Код: <i>. Код: <div class="switch">2.Итак, еще раз, мы скрываем чекбокс и задаем размеры для контейнера. Код: .switch {3.Затем мы собираемся сделать следующее: label будет контейнером для переключателя. А тег Код: <i>и будет фактически переключателем. Поэтому тег label будет иметь только серый фон с тенями, не более того. Псевдо-элементы сделают все остальное. Код: .switch label {4.Это "рамка контейнера", поэтому мы задаем ей приятный градиент и некоторые тени для блока. Код: .switch label:after {5.Этот псевдо-элемент предназначен для создания мягкого углубления вокруг кнопки, для этого мы будем использовать градиент и тени. Небольшое улучшение для Chrome с помощью фильтра blur, чтобы сделать эффект еще мягче. Код: .switch label:before {6.Итак, теперь у нас есть очень красивая рамка для наших переключателей. Теперь перейдем к самим переключателям. Сделаем его блочным элементом, зададим ему высоту его родителя и немного больше чем половину ширины родителя. Мы поместим его слева от контейнера, и зададим ему некоторые стили (тени и градиенты): Код: .switch label i {7.Этот первый псевдо-элемент используется для улучшения эстетики: он добавляет симпатичный эффект переключения. Код: .switch label i:after {8.Вторым псевдо-элементом является слово "ON" или "OFF", в зависимости от состояния кнопки. Мы используем свойство content, чтобы установить нужное слово, и некоторые стили для шрифтов, чтобы она выглядела, как будто она выгравирована на фоне: Код: .switch label i:before {Теперь у нас есть тумблер, который выглядит точно также как нарисовал Piotr, верно? 9.Теперь займемся состоянием кнопки, когда она "включена". Три вещи будут изменяться когда мы нажмем на флажок: цвет фона, переключение позиции, и слово ("ON" или "OFF"): Код: .switch input:checked ~ label { /* Background */Пример 4 Наш последний пример основан на другой работе от Piotr Kwiatkowski, но немного отредактированной мною, чтобы иметь те же цвета, что и другие примеры. 1.Разметка будет почти такой же, как в третьем примере. Класс для тега Код: <i>нужен для того, чтобы использовать FontAwesome. Код: <div class="switch">2.Я не буду описывать здесь все возможности FontAwesome, потому что я уверен, что многие уже работали с ним. Просто убедитесь, чтов вашем @font-face указан правильный путь к файлам,один из ваших CSS-файлов включает в себя стили FontAwesome. Итак, давайте начнем с основ: спрячем чекбокс и установим размеры контейнера: Код: .switch {3.Теперь, давайте позаботимся о этикетке, которая и будет нашей большой кнопкой. Обратите внимание, что мы включаем сюда некоторые стили для шрифтов. Поскольку все они наследуются, они будут применены к тегу Код: <i>(значок). Код: .switch label {4.Оба псевдо-элемента для этикетки используются для создания симпатичного эффекта вокруг кнопки. Мы применяем фильтр размытия для :before, чтобы сделать его немного более тонким. Код: .switch label:before {5.Теперь разберемся с нашими дополнительным элементом: Код: <i>. FontAwesome использует :before псевдо-элемент, чтобы показать иконку, поэтому мы не можем его использовать. Но мы можем использовать :after, и мы так и поступим, потому что мы должны что-то сделать с верхней частью нашей кнопки.Как обычно, мы зададим ей симпатичный градиент, тонкие тени с 1px размытия, чтобы сделать ее более гладкой. Код: .switch .icon-off:after {5.Теперь стили для отмеченного состояния: значок становится зеленым, а кнопка выглядит нажатой: Код: .switch input:checked ~ label { /* Button */Смотрим исходник,если что не понятно пишем в комментарии.
|
Категория «Кино»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.