购物车添加抛物线效果

简介: 购物车添加抛物线效果

前言

每次在网上买快递或点外卖的时候,将商品加入购物车时会有一个很炫酷的动画,如下图饿了么点餐动画所示:

实现效果

image.png

饿了吗,购物车抛物线动画

具体思路

1. 给添加按钮绑定点击事件
2. 获取点击事件到顶部和左部的距离
3. 并获取需要添加地方标签的位置
4. 新建一个 div 标签
5. 给 div 标签设置样式,并添加动画效果
6. 把 div 标签追加至 body 中
7. 添加动画结束时属性
8. 动画结束时删除

具体实现代码

通过 getBoundingClientRect() 可以获取到标签的位置和宽高

// 获取点击添加事件(x,y)轴位置(使用 ref 获取标签)
let x = this.$refs.btnj[index].getBoundingClientRect().x;
let y = this.$refs.btnj[index].getBoundingClientRect().y;
// 获取动画结束时的位置(使用 ref 获取标签)
let z = this.$refs.commodity.getBoundingClientRect().height + this.$refs.commodity.getBoundingClientRect().top;
// 新建一个 div 标签
let bar = document.createElement("div");
// 给新建标签添加 style 样式
bar.style.position = "absolute";
// 位置
bar.style.left = x + "px";
bar.style.top = y + "px";
// 宽高
bar.style.width = "0.5rem";
bar.style.height = "0.5rem";
// 圆角
bar.style.borderRadius = "50%";
// 背景色
bar.style.backgroundColor = "#00A0DC";
// 动画执行效果
bar.style.transition = "left .5s linear, top .5s cubic-bezier(0.5, -0.5, 1, 1)";
// 追加至 body 中
document.body.appendChild(bar);
// 添加动画属性;
setTimeout(() => {
  // 结束时位置
  bar.style.left = 35 + "px";
  bar.style.top = z + 20 + "px";
}, 0);
// 动画执行完成后删除
bar.ontransitionend = function () {
  this.remove();
};

以上就是 购物车添加抛物线效果 的实现代码和具体思路,不懂得也可以在评论区里问我,以后会持续添加一些新的功能,敬请关注。

相关文章
|
机器学习/深度学习 存储 监控
人脸识别
人脸识别是一种计算机视觉技术,它利用算法和数学模型来识别和验证人脸。人脸识别技术因其高度准确性和用户友好性而成为许多行业的必备技术。本文将探讨人脸识别技术的工作原理、应用以及未来发展方向。
778 0
|
Ubuntu Java Linux
alpine Linux与基于alpine制作JDK8镜像
Docker commit 命令 1.下载基础镜像 2.使用此基础镜像创建/启动/进入容器 3.在容器安装自己需要的软件 4.将保存配置完成的容器提交成镜像 语法如下 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。 实例:将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明
|
11月前
|
API 开发者
微信native支付对接案例详解
本文详细介绍了微信Native支付的对接流程,包括效果展示、产品介绍、接入前准备、开发指引、API列表、支付通知等,并强调了只有通过微信认证的服务号才能对接微信支付。每年需支付300元认证费用。
451 3
|
12月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
426 8
|
Rust 安全 Java
探索Rust在系统编程中的崛起
Rust 是一种由 Mozilla 研究院开发的现代系统编程语言,以其在安全性、并发性和内存管理方面的优势,逐渐成为开发者的新宠。Rust 提供内存安全保证且性能媲美 C/C++,支持跨平台开发,并具备强大的并发编程工具。本文将介绍 Rust 的核心优势、工作原理及实施方法,探讨其在系统编程中的崛起及其面临的挑战。尽管 Rust 学习曲线较陡,但其广泛的应用场景和不断壮大的社区使其成为构建高性能、安全应用的理想选择。
|
缓存 JavaScript 前端开发
【性能革命!】Vue 3事件监听缓存的奥秘 —— 揭开前端优化的神秘面纱,让应用性能飙升的秘密武器!
【8月更文挑战第7天】随着前端应用日益复杂,性能优化变得至关重要。Vue 3 通过引入事件监听缓存等新特性提升了应用性能。此特性避免了重复注册相同的事件监听器,减少了资源浪费和潜在的内存泄漏问题。在 Vue 3 中,事件监听器首次渲染时注册,并在后续渲染中重用,除非组件状态变更或手动更新。通过一个示例组件展示了如何利用该特性优化性能,包括使用 `watchEffect` 或 `watch` 在状态变化时重新注册监听器。这一机制降低了浏览器负担,减少了内存占用,提高了应用响应速度,尤其对大型应用效果显著。合理运用事件监听缓存能够构建出更加流畅的应用体验。
672 3
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
|
JavaScript API
Vue开发移动端签到领积分页面
Vue开发移动端签到领积分页面
388 1
|
JavaScript 前端开发
原型链中:为什么Function.proto==Function.prototype?
原型链中:为什么Function.proto==Function.prototype?
334 0
|
NoSQL 数据可视化 MongoDB
mongoDB从入门到实战最全小白教程
mongoDB从入门到实战最全小白教程
794 0

热门文章

最新文章