Css эффект мерцания кнопки

Как сделать CSS-анимацию блика на кнопке

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

В статье рассмотрим несколько вариантов:

  • Когда кнопка оформлена в виде ссылки или тега button.
  • Когда кнопка оформлена в виде тега input с атрибутом submit. В том числе посмотрим как это реализовать при помощи javascript, чтобы даже, например, на каком-нибудь конструкторе лендингов у вас получилось внедрить этот эффект, когда нет физического доступа к html настройкам кнопки.

Повторяющаяся анимация блика

Сначала разберем простой случай, когда кнопка оформлена при помощи тега «button» или «a». На самом деле никакой сложности в реализации эффекта — нет. Суть заключается в том, чтобы дать кнопке «overflow: hidden» и «position: relative», а затем, внутри нее создать псевдоэлемент (сам блик) и зациклить его анимацию перемещения. Давайте займемся этим.

Для начала создадим кнопки в html сами кнопки.

А теперь добавим базовые стили в CSS.

Читайте также:  Html and css web template

Анимация блика на кнопке

Теперь давайте добавим сам блик. Как я уже говорил, делать его будем при помощи псевдоэлемента, а именно при помощи «after» c абсолютным позиционированием, но сначала давайте добавим нашим кнопкам «position» и «ovefflow».

Добавляем псевдоэлемент и свойства анимации:

.flare-button:after < content: ""; display: block; width: 20px; height: 200px; margin-left: 50px; background: #fff; background: linear-gradient( to bottom, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 1) 50%, rgba(255, 255, 255, 0.5) 100% ); left: -40px; top: -100px; z-index: 1; transform: rotate(45deg); position: absolute; animation: movingFlare 3s ease-in-out 0.05s infinite; >@keyframes movingFlare < 0% < left: -30px; margin-left: 0px; >30% < left: 110%; margin-left: 80px; >100% < left: 110%; margin-left: 80px; >>

В результате получилось так.

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

  • Толщина блика. Задается свойством «width». В моем случае это 20 пикселей.
  • Наклон блика. Задается свойством transform. В моем случае 45 градусов.
  • Свойства анимации. Задаются при помощи «annimation». Подробнее тут.

Анимация блика у тега input

Иногда кнопка для отправки формы обратной связи оформлены не тегом button, а при помощи тега input. В таком случае не получится воспользоваться способом, описанным выше, ведь у инпута невозможно задать псевдоэлемент «after» или «before». В таком случае можно просто обернуть его, например, в «div» и применить тот же подход, что и для элементов выше. Давайте займемся этим.

.flare-input < width: 100%; height: 50px; border: none; font-size: 16px; font-weight: bold; text-align: center; text-transform: uppercase; color: #fff; background: #eb9f11; padding: 3px 15px 0; cursor: pointer; text-decoration: none; >.flare-input__wrapper < width: 100%; max-width: 280px; height: 50px; display: flex; justify-content: center; align-items: center; margin-bottom: 30px; border-radius: 3px; overflow: hidden; position: relative; box-shadow: 0 3px 3px #be8316; >.flare-input__wrapper:after < content: ""; display: block; width: 20px; height: 200px; margin-left: 50px; background: #fff; background: linear-gradient( to bottom, rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 1) 50%, rgba(255, 255, 255, 0.7) 100% ); left: -40px; top: -100px; z-index: 1; transform: rotate(45deg); position: absolute; animation: movingFlare 3s ease-in-out 0.05s infinite; >@keyframes movingFlare < 0% < left: -30px; margin-left: 0px; >30% < left: 110%; margin-left: 80px; >100% < left: 110%; margin-left: 80px; >>

В итоге у меня получись таких 3 кнопки.

Исходник кнопки с анимацией блика

Источник

Анимированный блик на чистом CSS

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

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

Как всегда, вы можете посмотреть пример блика на кнопке и готовый код для него на codepen .

Анимированный блик на кнопке — HTML часть

Саму кнопку вы можете стилизовать как хотите, тут только мой пример. Важное, что вам нужно сделать — добавить для самой кнопки свойство overflow-x: hidden и position: relative . Это нужно, что бы скрыть блик, когда он не на кнопке и правильно позиционировать его относительно её.

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

.button < padding: 20px 80px; background: #3E64FF; color: #ffffff; text-decoration: none; font-size: 24px; font-weight: 600; border-radius: 10px; position: relative; // Это важно добавить overflow-x: hidden; / Это важно добавить >.button .flare < position: absolute; top: 0; height: 100%; width: 45px; transform: skewX(-45deg); // Наклон animation: flareAnimation; left: -150%; background: linear-gradient(90deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.4)); animation: flareAnimation 3s infinite linear; // Время и тип анимации можно менять >@keyframes flareAnimation < 0% < left: -150%; >100% < left: 150%; >>

Результат

Спасибо, что прочитали! Если у вас остались любые вопросы — задавайте их на Youtube, или пишите мне в Telegram, с радостью вам помогу и отвечу на вопросы.

Full Stack разработчик, Frontend: Vue.js (2,3) + VueX + Vue Router, Backend: Node.js + Express.js. Раньше работал с РНР, WordPress, написал несколько проектов на Laravel. Люблю помогать людям изучать что-то новое)

Источник

Как создать мигающую/светящуюся кнопку с помощью анимации в CSS3

В этой статье мы покажем, как создать мигающую/светящуюся кнопку, используя только CSS. Здесь вам не нужно использовать JavaScript. Просто выполните следующие шаги и попробуйте примеры!

1. Создайте ссылку и кнопку.

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

a href="#" >button">Click here!a> button type="submit" >button">Click here!button>

2. Добавьте оформление к кнопке.

Дальше необходимо указать внешний вид кнопки с помощью CSS свойств:

.button< background-color: #1c87c9; -webkit-border-radius: 60px; border-radius: 60px; border: none; color: #eeeeee; cursor: pointer; display: inline-block; font-family: sans-serif; font-size: 20px; padding: 10px 10px; text-align: center; text-decoration: none; >

3. Добавьте анимацию к кнопке:

Нам нужны ключевые кадры, чтобы добавить анимацию. Анимация содержит три ключевых кадра. Каждый из них определяет новые значения для свойств background color и the box-shadow.

@keyframes glowing < 0% < background-color: #2ba805; box-shadow: 0 0 3px #2ba805; > 50% < background-color: #49e819; box-shadow: 0 0 10px #49e819; > 100% < background-color: #2ba805; box-shadow: 0 0 3px #2ba805; > >

Ключевые кадры в оформлении анимаций:

  1. 0% — начальная точка, которая указывает зеленый цвет фона и тот же цвет тени вокруг кнопки с расстоянием размытия 3 px.
  2. 50% — средняя точка, которая указывает светло-зеленый цвет фона и тот же цвет тени вокруг кнопки с расстоянием размытия 10 px.
  3. 100% — конечная точка, которая указывается как 0%.

Давайте посмотрим результат!

Пример

html> html> head> title>Заголовок документа title> style> .button < background-color: #1c87c9; -webkit-border-radius: 60px; border-radius: 60px; border: none; color: #eeeeee; cursor: pointer; display: inline-block; font-family: sans-serif; font-size: 20px; padding: 10px 10px; text-align: center; text-decoration: none; > @keyframes glowing < 0% < background-color: #2ba805; box-shadow: 0 0 5px #2ba805; > 50% < background-color: #49e819; box-shadow: 0 0 20px #49e819; > 100% < background-color: #2ba805; box-shadow: 0 0 5px #2ba805; > > .button < animation: glowing 1300ms infinite; > style> head> body> h2>Создайте мигающую/светящуюся кнопку h2> a class="button" href="#">Нажмите сюда! a> button type="submit" class="button">Нажмите сюда! button> body> html>

Пример

html> html> head> title>Заголовок документа title> style> body < margin: 0; > .wrapper < display: flex; height: 20vh; flex-direction: row; justify-content: center; align-items: center; > .button < border: 1px transparent; -webkit-border-radius: 40px; border-radius: 40px; color: #eeeeee; cursor: pointer; display: inline-block; font-family: Arial; font-size: 20px; padding: 8px 30px; text-align: center; text-decoration: none; margin-left: 20px; -webkit-animation: glowing 1300ms infinite; -moz-animation: glowing 1300ms infinite; -o-animation: glowing 1300ms infinite; animation: glowing 1300ms infinite; > @-webkit-keyframes glowing < 0% < background-color: #0091b2; -webkit-box-shadow: 0 0 3px #0091b2; > 50% < background-color: #21c7ed; -webkit-box-shadow: 0 0 15px #21c7ed; > 100% < background-color: #0091b2; -webkit-box-shadow: 0 0 3px #0091b2; > > @keyframes glowing < 0% < background-color: #0091b2; box-shadow: 0 0 3px #0091b2; > 50% < background-color: #21c7ed; box-shadow: 0 0 15px #21c7ed; > 100% < background-color: #0091b2; box-shadow: 0 0 3px #0091b2; > > .svg-btn < display: block; width: 230px; height: 230px; margin-left: 10px; > svg < fill: blue; -webkit-animation: glowing-polygon 1300ms infinite; -moz-animation: glowing-polygon 1300ms infinite; -o-animation: glowing-polygon 1300ms infinite; animation: glowing-polygon 1300ms infinite; > @-webkit-keyframes glowing-polygon < 0% < fill: #0091b2; -webkit-filter: drop-shadow( 0 0 3px #0091b2); > 50% < fill: #21c7ed; -webkit-filter: drop-shadow( 0 0 15px #21c7ed); > 100% < fill: #0091b2; -webkit-filter: drop-shadow( 0 0 3px #0091b2); > > @keyframes glowingPolygon < 0% < fill: #0091b2; filter: drop-shadow( 0 0 3px #0091b2); > 50% < fill: #21c7ed; filter: drop-shadow( 0 0 15px #21c7ed); > 100% < fill: #0091b2; filter: drop-shadow( 0 0 3px #0091b2); > > style> head> body> h2>Создайте мигающую/светящуюся кнопку h2> div class="wrapper"> a class="button" href="#">Нажмите сюда! a> button type="submit" class="button">Нажмите сюда! button> a class="svg-btn"> svg height="210" width="200"> polygon points="100,10 40,198 190,78 10,78 160,198" style="fill: #0091b2;"/> svg> a> div> body> html>

Источник

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

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

Вот, что мы хотим получить в итоге.

Итак, давайте начнем с разметки.

HTML разметка пульсирующей кнопки

Обычно я использую несложную структуру, которую разберем ниже. Например, я применял ее в виджете SmartLid, который планирую в этом году обновить и переписать, скорее всего на Vue.

 Как видите, действительно ничего сложного. Обычная кнопка с несколькими тегами "span" внутри. Первый отвечает за иконку, второй за вывод текста, а остальные, с классом "rings", за круги, которые и имитируют пульсацию.

Давайте добавим стили и добьёмся такого же внешнего вида как в примере выше. Начнем со стилей самой кнопки.

CSS стили кнопки

Туи все стандартно. При помощи flexbox выровнял все по центру. Задал размеры, форму, цвет, позиционирования и положение.

Управлять положением кнопки можно при помощи атрибутов «left», «right», «top», «bottom». У меня кнопка располагается справа внизу на расстоянии 50 пикселей. Я использую «bottom: 50px;» и «right: 50px;». Если вам нужно справа вверху, то удалите мои атрибуты и впишите, например, «top: 100px;» и «left: 100px».

Кроме, возможна ситуация, когда кнопку при скролле будут перекрывать другие элементы сайта. Для этого нужно узнать у этого элемента значение z-index и сделать у кнопки его выше. Аналогично и модальным окном. Может случиться так, что оно не будет перекрывать кнопку. В таком случае нужно сделать у модального окна значения атрибута z-index повыше.

Подробнее про z-index можно почитать на MDN.

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

Начнем с иконки, так как у нас она видна по умолчанию.

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

Теперь займемся блоком с текстом.

Тут тоже без сюрпризов. Временно можете закомментировать блок с иконкой, а у текста инвертировать «opacity» и «hidden», чтобы отцентрировать текст в случае, если используете другой шрифт. Сейчас этот блок невидно, так как логика в том, чтобы показать его только при наведении на кнопку. Давайте сделаем это.

.pulse-button:hover .pulse-button__icon < opacity: 0; visibility: hidden; position: absolute; transition: .3s; >.pulse-button:hover .pulse-button__text

При наведении на кнопку при помощи «opacity», «visibility» и «position» скрываем область с иконкой и показываем «span» с текстом. «Transition» отвечает за плавность.

Как сделать пульсации на CSS

Теперь займемся стилизацией окружностей, которые отвечают за имитацию пульсации. Как вы помните — у нас их 3.

.pulse-button__rings < border: 1px solid #ff0000; position: absolute; top: 0; left: 0; bottom: 0; right: 0; height: auto; width: auto; border-radius: 50%; animation-duration: 2.0s; animation-name: pulse_1; animation-iteration-count: infinite; z-index: -1; >.pulse-button__rings:nth-child(2) < animation-name: pulse_2; >.pulse-button__rings:nth-child(3)

Тут самое интересное это анимация. Говорю, что длиться она будет 2 секунды, бесконечно раз. В «annimation-name» передаю название анимации, вид которой описан ниже. «Border» — отвечает за толщину окружности.

@keyframes pulse_1 < from < opacity: 1; transform: scale(0.9, 0.9); >to < opacity: 0; transform: scale(1.3, 1.3); >> @keyframes pulse_2 < from < opacity: 1; transform: scale(0.8, 0.8); >to < opacity: 0; transform: scale(1.5, 1.5); >> @keyframes pulse_3 < from < opacity: 1; transform: scale(0.8, 0.8); >to < opacity: 0; transform: scale(1.7, 1.7); >>

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

О том как сделать вызов модального окна при клике на любую кнопку подробно описано в статье: «Как сделать модальное окно на сайте». Там разбираемся в 2 способах. Первый описывает как это сделать на чистом js, а второй — при помощи jQuery.

А на сегодня — все. Если возникнут вопросы — смело задавайте их в комментариях.

Исходник пульсирующей кнопки

Источник

Оцените статью