JSFiddle - React, Tailwind, and code Playground

by Anatoly Kulikov

HTML

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<h1>Call-Кнопка Виджет с Подменю</h1>
<div class="call-widjet">
	<div class="ui-list">
		<a href="#phone" class="button_call ui-tooltip phone" data-toggle="tooltip" data-placement="left" title="Позвонить"></a>
		<a href="#skype" class="button_call ui-tooltip skype" data-toggle="tooltip" data-placement="left" title="Skype"></a>
		<a href="#whatsapp" class="button_call ui-tooltip whatsap" data-toggle="tooltip" data-placement="left" title="Whatsapp"></a>
		<a href="#vkontakte" class="button_call ui-tooltip vk" data-toggle="tooltip" data-placement="left" title="Вконтакте"></a>
		<a href="#telegram" class="button_call ui-tooltip telegram" data-toggle="tooltip" data-placement="left" title="Telegram"></a>
	</div>
	<div class="pulse button_call"><i class="ico"></i></div>
</div>

CSS

.call-widjet .telegram{background-color:#30A3E6;}
.call-widjet .telegram:hover{background-color:#167CB7;}
.call-widjet .vk{background-color:#4C73A4;}
.call-widjet .vk:hover{background-color:#3B5980;}
.call-widjet .whatsap{background-color:#37B725;}
.call-widjet .whatsap:hover{background-color:#2C931D;}
.call-widjet .skype{background-color:#00AFF0;}
.call-widjet .skype:hover{background-color:#008CC0;}
.call-widjet .phone{background-color:#37B725;}
.call-widjet .phone:hover{background-color:#2C931D;}
/* General CSS */
.call-widjet{position:fixed;bottom:0;right:0;}
.call-widjet .ui-list{position:absolute;bottom:120px;right:28px;height:0px;opacity:0}
/* Icons */
.call-widjet .ui-list a{text-decoration:none;display:block;width:45px;height:45px;line-height:45px;font-size:26px;border-radius:100%;text-align:center;color:#fff;margin:8px auto;box-shadow:0px 0px 5px 0px rgba(0,0,0,0.2)}
.call-widjet .ui-list a:hover{text-decoration:none;}
.pulse{background:#008E06;position:absolute;bottom:20px;right:20px;width:60px;height:60px;line-height:60px;border-radius:100%;text-align:center;font-size:30px;color:#fff;box-shadow:0px 0px 5px 0px rgba(0,0,0,0.2);-webkit-transition:all 0.2s;-moz-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s;-moz-animation:pulse 1.25s infinite cubic-bezier(0.66,0,0,1);-webkit-animation:pulse 1.25s infinite cubic-bezier(0.66,0,0,1);animation:pulse 1.25s infinite cubic-bezier(0.66,0,0,1);}
.pulse.active{font-size:40px;line-height:60px;-moz-animation:none;-webkit-animation:none;animation:none;-webkit-box-shadow:none;box-shadow:none;-moz-box-shadow:none;-o-box-shadow:none;transform:rotate(45deg);}
.pulse:before,
.pulse:after{content:"";display:block;position:absolute;border:50%;border:1px solid #008E06;left:-20px;right:-20px;top:-20px;bottom:-20px;border-radius:50%;animation:animate 1.5s linear infinite;opacity:0;backface-visibility:hidden;}
.pulse:after{animation-delay:.5s;}
.pulse:hover{cursor:pointer;}

JavaScript

$(document).ready(function (){
	$(".button_call").click(function (e){
  	e.preventDefault();
		if (!($('.pulse').hasClass("active"))){
			$(".ui-list").animate({
				height: "240px",
				opacity: "1",
				bottom: "120px"
			});
			$('.pulse').addClass("active");
		} else {
			$(".ui-list").animate({
				height: "0px",
				opacity: "0",
				bottom: "-130px"
			});
			$('.pulse').removeClass("active");
		}
	});
});