购物车-多元素组合动画css

学习渡一课程 多元素组合动画练习。

在我们开发购物车功能时,经常会有点击添加按钮,就会有一个小圆点掉进购物车的动画,如下图所示,今天我们通过css来实现。

首先实现多元素组合动画

直接上代码,可以复制到本地使用:

javascript 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>多元素动画</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .view{
            width: 400px;
            height: 600px;
            position: relative;
          
            border: 1px solid #dedede;
        }
        .ShoppingCart {
            position: absolute;
            right: 0;
            bottom: 0;
            text-align: center;
            width: 80px;
            height: 40px;
            background-color: blueviolet;
            color: #ffffff;
        }
        
        .add {
            position: relative;
            width: 20px;
            height: 20px;
            top:50px;
            left: 10px;
            background-color: blue;
            color: #ffffff;
            text-align: center;
            line-height: 20px;
            cursor: pointer;
            border-radius: 50%;
        }
        .box{
            position: absolute;
            top: 0;
            left: 0;
            display: none;
        }
        .active{
            display: block;
            animation: move1 0.6s cubic-bezier(0, 0.36, 1, 0.59);
        }
        .ball{
            width: 20px;
            height: 20px;
            top: 0;
            left: 0;
            border-radius: 50%;
            background-color: blue;
            position: absolute;
            z-index: -1;
            
        }
        .active .ball{
            animation: move2 0.6s cubic-bezier(0.35,-0.35, 1, 0.38);
        }

        @keyframes move1 {
            to {
                transform: translateX(350px);
            }
        }
        @keyframes move2 {
            to {
                transform: translateY(510px);
            }
        }

    </style>
</head>

<body>
    <div class="view">
        <div class="add" id="add">
            +
            <div class="box">
                <div class="ball"></div>
            </div>
        </div>
       
        <div class="ShoppingCart">
            购物车
        </div>
    </div>
   
    
</body>
<script>    

    let add = document.querySelector(".add")
    let box = document.querySelector(".box")
    add.addEventListener("click",()=>{
        box.className = "box active"
        setTimeout(()=>{
            box.className = "box"
        },2000)
    })
</script>
</html>

实现多个动画

上代码

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>多种元素动画</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .view{
            width: 400px;
            height: 600px;
            position: relative;
          
            border: 1px solid #dedede;
        }
        .ShoppingCart {
            position: absolute;
            right: 0;
            bottom: 0;
            text-align: center;
            width: 80px;
            height: 40px;
            background-color: blueviolet;
            color: #ffffff;
        }
        
        .add {
            position: relative;
            width: 20px;
            height: 20px;
            top:50px;
            left: 10px;
            background-color: blue;
            color: #ffffff;
            text-align: center;
            line-height: 20px;
            cursor: pointer;
            border-radius: 50%;
        }
        .box{
            position: absolute;
            top: 0;
            left: 0;
            animation: move1 0.6s cubic-bezier(0, 0.36, 1, 0.59);
        }
    
        .ball{
            width: 20px;
            height: 20px;
            top: 0;
            left: 0;
            border-radius: 50%;
            background-color: blue;
            position: absolute;
            z-index: -1;
            animation: move2 0.6s cubic-bezier(0.35,-0.35, 1, 0.38);
        }
    

        @keyframes move1 {
            to {
                transform: translateX(350px);
            }
        }
        @keyframes move2 {
            to {
                transform: translateY(510px);
            }
        }

    </style>
</head>

<body>
    <div class="view">
        <div class="add" id="add">
            +
            
        </div>
       
        <div class="ShoppingCart">
            购物车
        </div>
    </div>
   
    
</body>
<script>    

    let add = document.querySelector(".add")
    let box = document.querySelector(".box")
    add.addEventListener("click",()=>{
        let ele = document.createElement("div")
        ele.className = "box"
        ele.innerHTML = "<div class='ball'></div>"
        add.appendChild(ele)
        setTimeout(()=>{
            ele.parentNode.removeChild(ele);
        },1000)
    })
</script>
</html>
相关推荐
西陵几秒前
为什么说 AI 赋能前端开发,已经不是选择题,而是必然趋势?
前端·架构·ai编程
by__csdn1 小时前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
天天扭码1 小时前
前端如何实现RAG?一文带你速通,使用RAG实现长期记忆
前端·node.js·ai编程
Luna-player2 小时前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
lionliu05192 小时前
js的扩展运算符的理解
前端·javascript·vue.js
小草cys2 小时前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript
奇舞精选2 小时前
GELab-Zero 技术解析:当豆包联手中兴,开源界如何守住端侧 AI 的“最后防线”?
前端·aigc
奇舞精选2 小时前
Vercel AI SDK:构建现代 Web AI 应用指南
前端·aigc
神仙别闹3 小时前
基于C语言实现B树存储的图书管理系统
c语言·前端·b树
玄魂3 小时前
如何查看、生成 github 开源项目star 图表
前端·开源·echarts