You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现带平滑过渡悬停动画的心形点赞按钮?

复刻心形点赞按钮(带悬停过渡动画)

方案一:纯CSS绘制心形(推荐,过渡更丝滑)

无需依赖图标库,纯CSS实现可完美解决背景色留边框的问题,过渡效果自然:

<button class="like-btn"></button>
.like-btn {
  width: 40px;
  height: 40px;
  border: none;
  background: transparent;
  cursor: pointer;
  position: relative;
}

/* 绘制空心心形框架 */
.like-btn::before,
.like-btn::after {
  content: '';
  position: absolute;
  top: 10px;
  width: 20px;
  height: 32px;
  border: 2px solid #ccc;
  border-radius: 20px 20px 0 0;
  transition: all 0.3s ease;
}

.like-btn::before {
  left: 20px;
  transform: rotate(-45deg);
  border-left: none;
  border-bottom: none;
}

.like-btn::after {
  left: 0;
  transform: rotate(45deg);
  border-right: none;
  border-bottom: none;
}

/* 悬停时切换为实心红色心形 */
.like-btn:hover::before,
.like-btn:hover::after {
  border-color: #e74c3c;
  background-color: #e74c3c;
}

方案二:改进Font Awesome实现(适配图标库需求)

如果必须用Font Awesome,通过叠加空心/实心两个图标,利用透明度过渡避免边框残留:

<button class="like-btn">
  <i class="fa-regular fa-heart empty-heart"></i>
  <i class="fa-solid fa-heart filled-heart"></i>
</button>
.like-btn {
  border: none;
  background: transparent;
  cursor: pointer;
  position: relative;
  font-size: 2rem;
}

.empty-heart, .filled-heart {
  position: absolute;
  top: 0;
  left: 0;
  transition: opacity 0.3s ease;
}

.empty-heart {
  color: #ccc;
  opacity: 1;
}

.filled-heart {
  color: #e74c3c;
  opacity: 0;
}

.like-btn:hover .empty-heart {
  opacity: 0;
}

.like-btn:hover .filled-heart {
  opacity: 1;
}

效果说明

两种方案均实现:

  • 初始状态:灰色空心心形
  • 悬停状态:红色实心心形,0.3秒平滑过渡,无边框残留问题

内容的提问来源于stack exchange,提问作者8bitmd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:31:00