Пульсирующая кнопка WhatsApp. Живая демонстрация данного виджета на этой странице. Если вы с ПК то справа внизу вы увидете пульсирующую кнопку: whatsapp. Если вы с мобильного устройства (или можете сузить окно браузера для просмотра эффекта), то кнопка расположится в нижней части экрана, по центру.

Пример

В данном примере иконка whatsapp подключается из шрифта fontawesome. Можно чуть изменить код и использовать вместо fontawesome svg иконку whatsapp или любого другого мессенджера.

  • Пример
  • HTML
  • CSS

Для наглядности эффекта, данный пример расположен вне рамок с кодом, обратите внимание на нижний правый угол.

<script src="https://use.fontawesome.com/cba96dfc46.js"></script>

<div type="button" class="callback-bt">
    <a href="https://wa.me/77777777777?text=Я%20заинтересован%20в%20услуге" target="_blank">
		<div class="text-call"><i class="fa fa-whatsapp"></i></div>
    </a>
</div>
.callback-bt {
	background: #25d366;
	border: 0px solid #38a3fd;
	border-radius: 50%;
	box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3);
	cursor: pointer;
	height: 68px;
	text-align: center;
	width: 68px;
	position: fixed;
	right: 5%;
	bottom: 10%;
	z-index: 999;
	transition: .3s;
	-webkit-animation: hoverWave linear 1s infinite;
	animation: hoverWave linear 1s infinite;
}

.callback-bt .text-call {
	height: 68px;
	width: 68px;
	border-radius: 50%;
	position: relative;
	overflow: hidden;
}

.callback-bt .text-call span {
	text-align: center;
	color: #38a3fd;
	opacity: 0;
	font-size: 0;
	position: absolute;
	right: 4px;
	top: 22px;
	line-height: 14px;
	font-weight: 600;
	text-transform: uppercase;
	transition: opacity .3s linear;
	font-family: 'montserrat', Arial, Helvetica, sans-serif;
}

.callback-bt .text-call:hover span {
	opacity: 1;
	font-size: 11px;
}

.callback-bt:hover i {}

.callback-bt:hover {
	z-index: 1;
	background: #188b43;
	color: transparent;
	transition: .3s;
}

.callback-bt:hover i {
	font-size: 40px;
	transition: .3s;
}

.callback-bt i {
	color: #fff;
	font-size: 44px;
	transition: .3s;
	line-height: 66px;
	margin-left: -2px;
	transition: .5s ease-in-out;
}

.callback-bt i {
	animation: 1200ms ease 0s normal none 1 running shake;
	animation-iteration-count: infinite;
	-webkit-animation: 1200ms ease 0s normal none 1 running shake;
	-webkit-animation-iteration-count: infinite;
}

@-webkit-keyframes hoverWave {
	0% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 0 rgba(56, 163, 253, 0.2), 0 0 0 0 rgba(56, 163, 253, 0.2)
	}
	40% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 15px rgba(56, 163, 253, 0.2), 0 0 0 0 rgba(56, 163, 253, 0.2)
	}
	80% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 30px rgba(56, 163, 253, 0), 0 0 0 26.7px rgba(56, 163, 253, 0.067)
	}
	100% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 30px rgba(56, 163, 253, 0), 0 0 0 40px rgba(56, 163, 253, 0.0)
	}
}

@keyframes hoverWave {
	0% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 0 rgba(56, 163, 253, 0.2), 0 0 0 0 rgba(56, 163, 253, 0.2)
	}
	40% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 15px rgba(56, 163, 253, 0.2), 0 0 0 0 rgba(56, 163, 253, 0.2)
	}
	80% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 30px rgba(56, 163, 253, 0), 0 0 0 26.7px rgba(56, 163, 253, 0.067)
	}
	100% {
		box-shadow: 0 8px 10px rgba(56, 163, 253, 0.3), 0 0 0 30px rgba(56, 163, 253, 0), 0 0 0 40px rgba(56, 163, 253, 0.0)
	}
}


/* animations icon */

@keyframes shake {
	0% {
		transform: rotateZ(0deg);
		-ms-transform: rotateZ(0deg);
		-webkit-transform: rotateZ(0deg);
	}
	10% {
		transform: rotateZ(-30deg);
		-ms-transform: rotateZ(-30deg);
		-webkit-transform: rotateZ(-30deg);
	}
	20% {
		transform: rotateZ(15deg);
		-ms-transform: rotateZ(15deg);
		-webkit-transform: rotateZ(15deg);
	}
	30% {
		transform: rotateZ(-10deg);
		-ms-transform: rotateZ(-10deg);
		-webkit-transform: rotateZ(-10deg);
	}
	40% {
		transform: rotateZ(7.5deg);
		-ms-transform: rotateZ(7.5deg);
		-webkit-transform: rotateZ(7.5deg);
	}
	50% {
		transform: rotateZ(-6deg);
		-ms-transform: rotateZ(-6deg);
		-webkit-transform: rotateZ(-6deg);
	}
	60% {
		transform: rotateZ(5deg);
		-ms-transform: rotateZ(5deg);
		-webkit-transform: rotateZ(5deg);
	}
	70% {
		transform: rotateZ(-4.28571deg);
		-ms-transform: rotateZ(-4.28571deg);
		-webkit-transform: rotateZ(-4.28571deg);
	}
	80% {
		transform: rotateZ(3.75deg);
		-ms-transform: rotateZ(3.75deg);
		-webkit-transform: rotateZ(3.75deg);
	}
	90% {
		transform: rotateZ(-3.33333deg);
		-ms-transform: rotateZ(-3.33333deg);
		-webkit-transform: rotateZ(-3.33333deg);
	}
	100% {
		transform: rotateZ(0deg);
		-ms-transform: rotateZ(0deg);
		-webkit-transform: rotateZ(0deg);
	}
}

@-webkit-keyframes shake {
	0% {
		transform: rotateZ(0deg);
		-ms-transform: rotateZ(0deg);
		-webkit-transform: rotateZ(0deg);
	}
	10% {
		transform: rotateZ(-30deg);
		-ms-transform: rotateZ(-30deg);
		-webkit-transform: rotateZ(-30deg);
	}
	20% {
		transform: rotateZ(15deg);
		-ms-transform: rotateZ(15deg);
		-webkit-transform: rotateZ(15deg);
	}
	30% {
		transform: rotateZ(-10deg);
		-ms-transform: rotateZ(-10deg);
		-webkit-transform: rotateZ(-10deg);
	}
	40% {
		transform: rotateZ(7.5deg);
		-ms-transform: rotateZ(7.5deg);
		-webkit-transform: rotateZ(7.5deg);
	}
	50% {
		transform: rotateZ(-6deg);
		-ms-transform: rotateZ(-6deg);
		-webkit-transform: rotateZ(-6deg);
	}
	60% {
		transform: rotateZ(5deg);
		-ms-transform: rotateZ(5deg);
		-webkit-transform: rotateZ(5deg);
	}
	70% {
		transform: rotateZ(-4.28571deg);
		-ms-transform: rotateZ(-4.28571deg);
		-webkit-transform: rotateZ(-4.28571deg);
	}
	80% {
		transform: rotateZ(3.75deg);
		-ms-transform: rotateZ(3.75deg);
		-webkit-transform: rotateZ(3.75deg);
	}
	90% {
		transform: rotateZ(-3.33333deg);
		-ms-transform: rotateZ(-3.33333deg);
		-webkit-transform: rotateZ(-3.33333deg);
	}
	100% {
		transform: rotateZ(0deg);
		-ms-transform: rotateZ(0deg);
		-webkit-transform: rotateZ(0deg);
	}
}

@media(max-width:768px) {
	.review-list__container {
		display: grid;
		grid-template-columns: inherit;
		grid-gap: inherit;
	}
	.callback-bt {
		width: 100%;
		border-radius: 0;
		bottom: 0;
		left: 0;
		box-shadow: none;
		transition: none;
		animation: none;
	}
	.callback-bt i {
		color: #fff;
		font-size: 34px;
		transition: .3s;
		line-height: 48px;
		margin-left: -2px;
		transition: .5s ease-in-out;
	}
	.callback-bt:after {
		content: 'Написать в WhatsApp';
		font-size: 20px;
		color: #fff;
		margin-top: -56px;
		position: absolute;
		left: 66px;
	}
	.callback-bt {
		cursor: pointer;
		height: 52px;
	}
	.callback-bt a {
		position: relative;
		z-index: 99999;
		width: 100%;
		display: block;
	}
}
Обсудить проект
Хотите обсудить проект? Есть вопросы по алгоритму работы?

Смело оставляйте заявку на нашем сайте и мы свяжемся с вами в самое ближайшее время.