Как сделать двигающуюся кнопку

Создаем анимированные кнопки при помощи CSS3

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

В данной статье я хочу поделиться с вами некоторыми экспериментами по созданию анимированных кнопок при помощи CSS3. Идея заключается в создании анимированных ссылок с разными стилями, hover-эффектами и пр.

В данных примерах используются иконки с webiconset.com, а также шрифт от Just Be Nice.

Мы рассмотрим каждый пример и разберем как выглядит их HTML-структура и стили для разных состояний кнопок.

Обратите внимание, что анимация/переходы будут работать только в браузерах, которые поддерживают эти CSS3-свойства.

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

Пример 1

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

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

HTML-разметка

Структура довольно проста: иконка изображения и другие элементы в тегах span:

В стилях мы убедимся что переходы установлены правильно для элемента, который мы хотим анимировать при наведении. Цена будет невидимой, установим её прозрачность на 0. Применение множества box-shadow позволит нам создавать реалистичные эффекты:

При наведении мыши на кнопку мы будем менять тень, а также покажем цену и спрячем изображение:

В активном состоянии сделаем кнопку нажатой добавив тень. Значок стрелки справа будет увеличен:

Пример 2

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

HTML-разметка

Разметка на этом примере будет такой же, как и в первом примере.

Стили почти такие же, как и в первом примере, мы просто адаптируем цвета. Но мы сделаем другой эффект при наведении. Цена увеличится до исходного размера и иконка исчезнет. Для стрелки изменим цвет фона на красный:

Активное состояние будет таким же, как и в предыдущем примере. Мы будем только изменять цвета. Когда мы нажимаем кнопку, мы будем также поворачивать стрелку:

Пример 3

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

В этом примере мы попытаемся сделать что-то совершенно другое. Кнопка будет расширяться вниз при наведении и раскрывать еще одно сообщение. Значок стрелки будет слегка вращаться.

HTML-разметка

Разметка в примере 3, будет несколько иной, чем в предыдущих примерах. Текст, который будет скользить вниз, будет в теге span с классом «a-btn-slide-text»:

В нормальном состоянии кнопка будет иметь определенную высоту, мы будем анимировать её при наведении с целью вывода дополнительных сообщений. Дополнительное сообщение «a-btn-slide-text» будет позиционироваться абсолютно и мы будем увеличивать его высоту от 0 до 30 пикселей при наведении.

При наведении мы будем менять высоту кнопки и дополнительный текст. Мы также будем вращать значок стрелки на 45 градусов:

В активном состоянии кнопка будет немного двигаться и изменять цвет, так что кнопка будет казаться нажатой:

Пример 4

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку
В примере 4, мы будем выдвигать дополнительное сообщение, как и в предыдущем примере, но мы сделаем это теперь с правой стороны. Это будет выглядеть как будто кнопка открывает сообщение внутри себя.

HTML-разметка

Разметка в этом примере такая же, как и в предыдущем.

Стили кнопки будут похожи на предыдущий пример. Мы только изменим цвет и положение дополнительного текста:

При наведении мы увеличим справа padding кнопки, а также ширину тега span с классом «a-btn-slide-text»:

В активном состоянии создадим эффект нажатия при помощи тени:

Пример 5

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

В этом примере мы будем использовать символьный шрифт для иконок. Идея заключается в создании следующего эффекта: при наведении мыши иконка исчезает и появляется движущаяся стрелка.

HTML-разметка

Структура будет состоять из 4 тегов span внутри ссылки. Span с классом «a-btn-slide-icon» будет анимировать стрелку, она будет двигаться сверху вниз.

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

При нажатии на кнопку мы сделаем её красной и создадим эффект нажатия добавив тень:

И, наконец, простая анимация для перемещения стрелки сверху вниз:

Пример 6

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

В этом примере мы создадим круглую кнопку со звездочкой в ней. Мы заставим звезду вращаться при наведении курсора (с небольшим импульсом) и сделаем появление дополнительного текста.

HTML-разметка

У нас будет три тега span в нашей кнопке-ссылке. В последнем будет скрытый текст, который показывается при наведении.

Мы сделаем кнопки круглыми и добавим необычные тени к ним. Для того, чтобы отцентрировать основной текст по вертикали, мы установим display равным table-cell. Звезды и скрытый текст будет позиционироваться абсолютно.

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

Теперь сделаем кнопку якобы нажатой при нажатии на нее:

Анимация вращения/пульсации выглядит следующим образом:

Пример 7

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

В последнем примере мы создадим псевдо 3D-кнопку, использовав некоторые классные тени.

HTML-разметка

Структура будет такая же как и в пятом примере

Стиль будет также очень похож на пример 5, мы просто изменим некоторые цвета и тени:

При наведении мы будем увеличивать кнопку и вращать маленькую иконку:

При нажатии на кнопку, мы сделаем кнопку меньше и нажав на неё, изменим тень:

Вот и всё! Надеюсь, вам понравилось создание некоторых крэйзи-кнопок при помощи CSS3 и вы получили вдохновение для своих экспериментов!

Источник

Перемещение объекта по нажатии кнопки в Unity3d на C#

Доброго времени суток.

Сегодня поговорим про движение объекта по нажатию кнопки на экране в Unity3D. Эта тема очень проста, но часто используется в разного рода играх.

Для начала давайте создадим пустой 3D проект. Открываем Unity, нажимаем кнопку в правом верхнем углу с надписью «New». В поле «Project name» указываем название проекта. В строке «Location» указываем расположение проекта на диске. Ниже поля «Location» ставим флажок «3D» и нажимаем «Create project».

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Затем создаем куб который будет заменять нам землю (GameObject->3D Object->Cube). Потом сделаем его более плоским и растянем. Открываем окно «Inspector», выделяем наш куб, в параметре «Transform» пункт «Scale» задаем x:10, y:0.2, z:10. У нас должно получится такое полотно:

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Теперь перемещаем камеру на координаты x:0,y:5,z:0. Затем поворачиваем ее на 90 градусов по оси x. Затем нам нужно создать объект который мы будем перемещать. Создаем сферу (GameObject->3D Object->Sphere), задаем параметр «Position» в «Transform» как x:0, y:1, z:0. После этого чтобы лучше видеть нашу сцену ищем на вкладке «Hierarchy» объект с именем «Directional Light» и задаем ему параметр «Rotation» в «Transform» как x:180, y:-30, z:0. Наш проект теперь должен выглядеть вот так:

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Теперь нам нужна кнопка, по нажатию которой мы будем определять двигать ли наш объект. Сначала создаем экран на котором будет располагаться наша кнопка (GameObject->UI->Canvas). Следующий этап — создаем кнопку (GameObject->UI->Button). Затем надо написать скрипт для перемещения нашей сферы. В окне «Project» выбираем «Create», а там выбираем C# Script. Далее приведен код:

Сначала создаем переменную нашего объекта для перемещения. Вторая переменная — это расстояние на которое мы будем перемещать объект. Публичный метод «OnButtonDown» отвечает за перемещение при нажатии кнопки. Сначала задаем переменной S значение 1 или 2, после чего двигаем объект по оси X на S расстояние.

Затем выделяем нашу кнопку, в панели «Inspector» в самом низу нажимаем кнопку «Add Component», выбираем в «Scripts» наш код. Далее в компоненте «Button» снизу в пункте «On Click ()» нажимаем «+». Нажимаем на получившееся окно в параметре «On Click ()» в поле, где стоит «None (Object)». В нем выбираем нашу кнопку. Вот как это должно выглядеть:

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Потом в нашем параметре «On Click ()» выбираем блок в котором стоит «No Function», внутри него выбираем название нашего кода, а в нем выбираем метод «OnButtonDown()». Теперь когда кнопка настроена переходим к коду. В окне «Inspector» должен отображаться компонент с названием нашего кода. В поле «Sphere» выбираем нашу сферу. Вот что должно получится:

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Затем в окне «Game» нажимаем на «Maximize On Play». Теперь нажимаем на кнопку запуска игры. На экране отображается наша кнопка. Если кликнуть по ней, то наша сфера переместится по оси X.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Большое спасибо за прочтение публикации. Надеюсь, Вы приобрели для себя новые знания.

Источник

Стилизация старого доброго элемента button

Кнопка — это один из тех элементов, которые чаще всего используются на веб-страницах. Тег может быть применён для запуска некоего процесса вроде вывода данных, открытия модального окна, отправки формы и так далее. В материале, перевод которого мы публикуем, речь пойдёт о тонкостях стилизации элемента button и о том, как оформлять кнопки с учётом того, чтобы они хорошо работали бы в любых браузерах. Кроме того, тут будет рассмотрено большинство часто используемых стилей кнопок. Поговорим мы здесь и о некоторых сложностях, которые возникают при работе с кнопками.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Стили, применяемые к кнопкам по умолчанию

Может, разговор о «стандартных стилях» покажется кому-то обсуждением каких-то элементарных вещей, но, на самом деле, поговорить об этом довольно интересно. Вот стандартная таблица стилей для кнопок из пользовательского агента Google Chrome.

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

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Простая кнопка, к которой применены стандартные стили

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Свойство appearance этих кнопок установлено в none

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопка после сброса свойств

Теперь, когда мы сбросили стандартные стили кнопки, пришло время двигаться дальше. А именно, я хочу рассказать о том, как стилизовать кнопки, основываясь требованиях, предъявляемых к их дизайну.

Стилизация обычных кнопок

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

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Цвет текста (Text Color), размер шрифта (Font Size), фон (Background), скругление углов (Roundness), внутренний отступ (Padding)

Имея вышеприведённый CSS-код, мы можем получить кнопку, похожую на ту, которая показана на предыдущем рисунке. После того, как базовый стиль кнопки задан, нужно позаботиться о внешнем виде кнопки в различных состояниях.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Обычное состояние кнопки (Normal), получение фокуса (Focus), наведение на кнопку указателя мыши (Hover), отключение кнопки (Disabled)

▍Стили, применяемые к кнопкам при наведении на них мыши и при получении ими фокуса

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

Этот материал указывает на то, что важен порядок добавления стилей, применяемых к кнопке при наведении на неё мыши ( hover ) и при получении ей фокуса ( focus ).

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Хорошо, если сначала идёт стиль hover, а потом — стиль focus

Вот как выглядит правильный порядок описания стилей:

▍Минимальная ширина кнопки

Для того чтобы кнопка хорошо выглядела, она должна иметь определённую ширину. Важно заранее об этом подумать и принять во внимание длинные и короткие надписи, которые могут содержаться на кнопках. Благодаря свойству min-width можно установить минимальную ширину кнопки. Вот моя статья, где в подробностях обсуждается это и другие подобные свойства.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Стоит задавать свойство кнопок min-width

▍Внутренние отступы

Привлекательной может выглядеть идея, в соответствии с которой кнопкам не назначают горизонтальные внутренние отступы. Ведь кнопки имеют определённую ширину, а значит — между краями кнопок и надписями, содержащимися на них, будет достаточно места. Так? Нет, не так. Реализация этой идеи может иметь негативные последствия в тех случаях, когда надпись на кнопке меняется.

Взглянем на следующий рисунок.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Рекомендовано назначать кнопкам внутренние отступы

▍Семейство шрифта, используемого для надписей, расположенных на кнопках

▍Стилизация отключённых кнопок

Для того чтобы указать пользователю на то, что кнопка отключена, к ней можно добавить атрибут disabled и стилизовать кнопку средствами CSS.

Вот HTML-код, описывающий отключённую кнопку:

Вот CSS-код стилизации такой кнопки:

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

▍Внешний вид указателя мыши при наведении его на кнопку

Стандартный указатель мыши, наведённый на кнопку, выглядит как стрелка. Мне нравится этот ответ на StackOverflow: «Кнопки — это традиционный элемент управления настольных программ. Это — среда, в которой указатель в виде руки никогда не использовался до наступления эры интернета. Когда на веб-страницах стали применять тот же самый элемент управления, разработчики просто пытались сделать так, чтобы кнопки выглядели так же, как в настольных приложениях».

Для того чтобы переопределить обычное поведение указателя, рекомендовано поменять стандартный курсор-стрелку на курсор в виде руки.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Стандартный курсор-стрелка и улучшенный курсор в виде руки.

Теперь, когда мы обсудили базовые вопросы стилизации кнопок, приведём полный CSS-код, включающий в себя всё то, чего мы коснулись выше:

В следующих разделах мы поговорим о разных стилях и типах кнопок, которые вы можете использовать в своих проектах.

Кнопки со значком

Иногда нужно, чтобы на кнопке был бы некий значок. Это может понадобиться для того, чтобы выделить кнопку, или чтобы лучше проинформировать пользователя о роли кнопки. Важно, чтобы кнопки со значками были бы доступны пользователям с ограниченными возможностями.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Примеры кнопок со значками

Обратите внимание на то, что я воспользовался стилем vertical-align: middle для того чтобы выровнять значок и содержимое кнопки по вертикали.

Вот HTML-код кнопки, о которой идёт речь:

Может показаться, что теперь достаточно просто скрыть элемент span и дело будет сделано:

Хотя при таком подходе текст пропадает, а значок остаётся, это очень плохо в плане доступности контента. Кнопку уже «не видят» инструменты для чтения с экрана. Например, VoiceOver в macOS сообщает о том, что такая кнопка — это просто «Button», без каких-либо подробностей о ней. У этой проблемы есть несколько решений.

▍Использование SVG-значков

▍Настройка размеров кнопки со значком

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопка, у которой задано CSS-свойство min-width, и кнопка, у которой это свойство не задано

▍Визуальное скрытие текста

▍Установка размера шрифта в 0

▍Использование атрибута aria-label

Если вы хотите больше узнать о кнопках со значками — взгляните на этот материал.

Кнопки, содержащие несколько строк текста

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

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопка, содержащая две строки текста

Тут показана кнопка для формы подписки, содержащая основной и вспомогательный текст. Как сделать такую кнопку и при этом не забыть о её доступности для людей с ограниченными возможностями? Вот соответствующий HTML-код:

Средство для чтения с экрана «озвучит» эту кнопку как «Subscribe to our newsletter 240K+ subscribers». Когда пользователь это услышит, это его может запутать, так как ничто не будет разделять две строки текста, выводимые на кнопке. Взгляните на скриншот инструмента Chrome для исследования доступности элементов.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Исследование доступности элементов в Chrome

Для того чтобы не путать пользователей, я предпочёл бы скрыть вторую строку текста от средств для чтения с экрана. Сделать это можно, использовав атрибут aria-hidden в соответствующем элементе :

Если по какой-то причине изменить HTML-разметку нельзя, есть и другой способ добавления дополнительного текста на кнопку. Решение этой проблемы, которое показалось мне интересным, я нашёл на сайте Smashing Magazine. Оно заключается в том, чтобы размещать содержимое, пользуясь псевдоэлементами. При таком подходе средства для чтения с экрана не будут видеть ничего лишнего. Вот CSS-код этого решения:

Ссылки () или кнопки ( )?

Когда стоит пользоваться ссылками, а когда — кнопками? Для начала давайте поговорим о том, чем они отличаются друг от друга.

▍Ссылки

▍Кнопки

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

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

▍Элемент не обязан выглядеть как кнопка

Мне нравится этот пример, в котором, с учётом требований доступности контента, реализована панель-«аккордеон». Вначале, если представить, что JavaScript недоступен, результат рендеринга разметки выглядит так, как показано ниже.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Материалы страницы в условиях недоступности JavaScript

Вот HTML-код фрагмента такой разметки:

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

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Материалы страницы в условиях, когда JavaScript-функциональность доступна

В данном случае можно сказать, что использование элемента — это правильный выбор, так как кнопка решает задачу разворачивания и сворачивания блоков текста.

▍Кнопка загрузки

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Ссылка для загрузки документа, оформленная как кнопка

Вот код этой ссылки:

При таком подходе в нашем распоряжении оказывается ссылка, стилизованная как кнопка, которая делает своё дело, используя лишь семантические структуры HTML.

Кнопки с обводкой

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Обычная кнопка при наведении на неё мыши становится кнопкой с обводкой

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

Градиентные кнопки

Когда я работал над статьёй о позиционировании элементов, мне понадобилась кнопка с градиентным заполнением.

Мне было нужно нечто, подобное следующему рисунку.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Градиентная кнопка и её вариант с обводкой

Тут представлены два варианта кнопки — градиентная кнопка и кнопка с обводкой. Для того чтобы добиться такого внешнего вида кнопки, мне нужно было, чтобы у базовой (градиентной) кнопки имелась бы прозрачная граница. Эта граница будет показана только для кнопки с обводкой.

Тут всё, вроде бы, выглядит разумно, но в ходе работы я столкнулся со странной проблемой. Я даже попытался решить её, попросив помощи у пользователей Twitter. Эта проблема представлена на следующем рисунке.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Обычная кнопка, кнопка с градиентом (граница, на самом деле, прозрачная; цветом она выведена лишь для наглядности), кнопка со странными краями

Теперь, когда мы разобрались с тем, как выглядит градиентная кнопка с прозрачной границей, позвольте мне рассказать о причинах вышеописанных странностей.

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

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопка с широкими границами и градиент

Вот, если хотите поэкспериментировать, пример на CodePen.

Что лучше — height или padding?

▍Фиксированная высота

Предположим, что у нас имеется кнопка, стилизованная следующим образом:

При таком подходе текст не выравнивается по центру. Выглядит всё это так, как показано ниже.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопка, текст которой не выровнен по центру

Но у этого метода есть минусы:

▍Вертикальный внутренний отступ

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

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Попытка центровки текста кнопки

Вот CSS-код стилизации этой кнопки:

В этом случае содержимое кнопки выглядит слегка смещённым. Значение верхнего внутреннего отступа нужно немного уменьшить:

Оборачивание содержимого кнопки в тег

В ходе экспериментов я выяснил, что центровка текста кнопок Adobe немного сбита. Вот как это выглядит.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Центровка немного сбита

Я исследовал эти кнопки и заметил интересный паттерн. Содержимое обёрнуто в элемент с указанием фиксированной высоты для кнопки.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Изменение высоты кнопки и автоматическое центрирование её содержимого

Вот и всё. Хочу отметить, что при написании данного раздела мне помогла эта статья.

Кнопки внутри flexbox- или grid-контейнеров

Тут у вас может появиться вопрос о том, какое отношение кнопки имеют к flex- и grid-макетам. Позвольте мне прояснить этот вопрос.

Я работал над разделом одного проекта. Мне нужно было вертикально центрировать его содержимое. Поэтому я использовал flex-макет:

То, что у меня получилось, меня несколько удивило.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Результат использования flex-макета

По умолчанию каждый flex-элемент растягивается в пределах ширины родительского элемента. Именно это и произошло с кнопкой, представленной на предыдущем рисунке. Для того чтобы избежать этой неприятности, нужно настроить свойство align-self :

Вот как кнопка будет выглядеть после этого.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопка выглядит гораздо лучше

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопка, растянутая по высоте

Задавая выравнивание кнопки относительно центра контейнера, мы решаем проблему. Вот как теперь будет выглядеть тот же пример.

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Решение проблемы растянутой кнопки

Использование единиц измерения em

Единицу измерения em можно использовать для правильной настройки размеров кнопок. Эта единица измерения в такой ситуации весьма полезна. Единица измерения em равна font-size элемента ( px или rem ). Взглянем на следующий пример:

Как сделать двигающуюся кнопку. Смотреть фото Как сделать двигающуюся кнопку. Смотреть картинку Как сделать двигающуюся кнопку. Картинка про Как сделать двигающуюся кнопку. Фото Как сделать двигающуюся кнопку

Кнопки разных размеров

А вот фрагменты CSS-кода, в котором используется единица измерения em :

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

→ Вот пример использования подобных кнопок на CodePen

→ Вот моя статья на эту тему. Рекомендую с ней ознакомиться

Анимация и переходы

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

Итоги

Мне было очень приятно работать над этим материалом. Его написание заняло у меня больше года. Я счастлив от того, что он, наконец, опубликован. Надеюсь, вы нашли здесь что-то такое, что вам пригодится.

Уважаемые читатели! Известны ли вам какие-нибудь полезные способы работы с кнопками, которые остались за рамками этой статьи?

Источник

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

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