鼠标点击实现出现爱心特效并且上浮渐隐

先看效果图:

1.首先要解决如何让一个组件变成爱心的形状

用伪类实现,具体原理网上有

.heart {
    position: fixed;
    opacity: 1;
    scale: 3;
    width: 10px;
    height: 10px;
    background: red;
    transform: rotate(45deg);
}
.heart:after,.heart:before {
    content: "";
    width: inherit;
    height: inherit;
    background: inherit;
    border-radius: 50%;
    position: absolute;
}
.heart:after{
    top: -5px;
}
.heart:before {
    left: -5px;
}

2.动画

首先做一个@keyframes使爱心从当前位置向上移动

@keyframes move {
    100% {
        transform: translateY(-20px) rotate(45deg);
        opacity: 0;
    }
}

rotate是保持爱心的形状,因为做出的形状其实是爱心顺时针旋转45度的图形

window.onclick = function() {
    const heart = document.createElement("div")
    document.body.appendChild(heart)
    heart.classList.add("heart")
    heart.style.left = event.clientX + "px"
    heart.style.top = event.clientY + "px"
    heart.style.animation = "move 1s normal forwards"
    setTimeout(function () {
        document.body.removeChild(heart)
    },1000)
    heart.style.backgroundColor = "rgb(" + (Math.random() * 255) + "," + (Math.random() * 255) + "," + (Math.random() * 255) + ")"
};

这段代码实现监听点击,并且在每次点击都创建一个爱心(div)在点击的位置,然后逐渐上浮消失,并且每次点击的颜色也是随机的。

为了防止占用内存(咱也不知道自动回收及不及时),在一秒后同步删除

2024.2.2改:原本是用document.addEventListener("mousedown",function() {...})但是这样如果页面上有其他需要监听点击的事件就失效了(各位可以试试)不知道为什么换成这样就好了,有懂得大佬指点一二

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值