Olá pessoal, em um job recente tive a necessidade de fazer um pequeno efeito onde um elemento em html precisasse mudar a cor de fundo de forma que aparentasse que estivesse piscando, então neste artigo estou disponibilizando o código que utilizei para solucionar essa questão.
É um código que pode ser facilmente adaptável para sua necessidade de alternar estilo de CSS em seu layout com intervalo de tempo.
CSS Utilizado:
<style type="text/css">
.btn {
display: inline-block;
font-weight: 400;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
font-size: 1rem;
line-height: 1.5;
border-radius: .25rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-info {
color: #fff;
background-color: #5eadaf;
font-size: 22px;
border: 2px solid #fff;
}
.btn-info:hover {
color: #fff;
background-color: #138496;
border-color: #117a8b;
}
.load {
animation: fundoVerde 3.5s;
}
@keyframes fundoVerde {
0% { background: transparent; color: #333;}
33% { background: #28a745; color: #FFF; }
85% { background: #28a745; color: #FFF; }
100% { background: transparent; color: #333; }
}
</style>
HTML Utilizado:
<a href="#" class="btn btn-info">COMPRAR AGORA</a>
Jquery Utilizado:
<script type="text/javascript">
var timer = setInterval(efeitobotao, 2900);
function efeitobotao() {
$(".btn-info").addClass("load").delay(3200).queue(function() {
$(this).removeClass("load").dequeue();
});
};
</script>
Existe diversas formas de solucionar essa questão, se você tiver uma outra forma, mais simples ou criativa, deixe-nos saber deixando seu comentário abaixo, e se gostou compartilhe. Sintase livre para utilizá-lo como quiser. Obrigado!