返回

用CSS实现长按点赞累积动画

前端

在日常生活中,我们经常在一些社交媒体或视频平台上看到长按点赞的功能。当用户长按点赞按钮时,会出现一个累积点赞的动画效果,让人感觉更加有趣和有互动性。本文将介绍如何使用CSS实现长按点赞累积动画。

1. HTML结构

首先,我们需要创建一个HTML结构来定义点赞按钮和其他相关元素。

<div class="container">
  <button class="like-button">
    <span class="like-text">0</span>
    <i class="fas fa-heart"></i>
  </button>
</div>
  • container:包含点赞按钮的容器。
  • like-button:点赞按钮。
  • like-text:点赞数字。
  • fa-heart:点赞图标。

2. CSS样式

接下来,我们需要使用CSS来定义样式。

.container {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}

.like-button {
  width: 50px;
  height: 50px;
  border: none;
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.2);
  cursor: pointer;
}

.like-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 1.5rem;
  font-weight: bold;
}

.fa-heart {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 1.5rem;
  color: #ff0000;
}

.like-button:active .like-text {
  animation: like-text-animation 0.5s ease-in-out forwards;
}

@keyframes like-text-animation {
  0% {
    transform: translate(-50%, -50%) scale(1);
  }

  50% {
    transform: translate(-50%, -50%) scale(1.5);
  }

  100% {
    transform: translate(-50%, -50%) scale(1);
  }
}
  • container:设置容器的样式,使其居中显示。
  • like-button:设置点赞按钮的样式,使其圆形并带有阴影。
  • like-text:设置点赞数字的样式,使其居中显示。
  • fa-heart:设置点赞图标的样式,使其居中显示。
  • like-button:active .like-text:当点赞按钮处于激活状态时,应用点赞数字的动画效果。
  • like-text-animation:定义点赞数字动画的keyframes。

3. JavaScript

最后,我们需要使用JavaScript来实现长按点赞的功能。

const likeButton = document.querySelector('.like-button');
let likeCount = 0;

likeButton.addEventListener('mousedown', () => {
  likeButton.classList.add('active');
  likeCount++;
  likeButton.querySelector('.like-text').textContent = likeCount;
});

likeButton.addEventListener('mouseup', () => {
  likeButton.classList.remove('active');
});
  • likeButton:获取点赞按钮元素。
  • likeCount:点赞计数器。
  • mousedown事件监听器:当鼠标按下时,添加active类到点赞按钮上,并增加点赞计数器,然后更新点赞数字。
  • mouseup事件监听器:当鼠标松开时,移除active类从点赞按钮上。

这样,我们就完成了长按点赞累积动画的实现。