美文网首页react
React实现商品添加购物车动画(小圆点飞向购物车)

React实现商品添加购物车动画(小圆点飞向购物车)

作者: Poppy11 | 来源:发表于2022-09-01 14:47 被阅读0次

1、效果图

CPT2209011354-558x647.gif

2、首先第一步,计算出Add To Cart的Button距离顶部购物车的X轴距离和Y轴距离。动态添加keyframes。 (Add To Cart Function Code)

思路:首先X轴,求的是按钮到购物车的X轴距离,那么我们就求购物车按钮距离左边的距离 + 自身的宽度,就是购物车在页面距left的距离,然后就计算出Add To Cart距离左边的距离 + 自身的宽度,然后相减。就得到按钮到购物车的X轴距离。

Y轴,按钮到购物车Y轴距离,因为需要从下到上,所以是购物车到顶端的距离 - Add To Cart到顶部的距离。

const eleBtn = document.getElementById(`btnCart-${productId}`);
const eleCart = document.querySelector('#shopCart');
var boundBtn = eleBtn!.getBoundingClientRect();
var boundCart = eleCart!.getBoundingClientRect();
var offsetY = boundCart.top + boundCart.height - (boundBtn.top + boundBtn.height);
var offsetX = boundCart.left + boundCart.width - (boundBtn.left + boundBtn.width);
    const keyXFrames = `
        @keyframes yAxis {
            100% {
              transform: translateY(${offsetY}px);
            }
         }
         @keyframes xAxis {
            100% {
                transform: translateX(${offsetX}px);
            }
        }
        `;
const style = document.createElement('style');
style.innerHTML = keyXFrames;
document.getElementsByTagName('head')[0].appendChild(style);
eleBtn?.classList.add('sendtocart');
setTimeout(function () {
    eleBtn?.classList.remove('sendtocart');
    eleCart?.classList.add('shake');
    setTimeout(function () {
        eleCart?.classList.remove('shake');
    }, 500);
}, 1000);

3、CSS & HTML(Add To Cart Button)

Add To Cart Button样式,其实就是给button设置了相对定位,然后给购物数量父类加上绝对定位,子类number为购物数量的显示,调到Button右上角。
最主要的是下面sendtocart样式,给购物数量父类加上animation(X轴动画),给子类number加上animation(Y轴动画)

.add-to-cart-button {
    position: relative;
    .cart-item {
        position: absolute;
        top: -10px;
        right: -10px;
        &-number {
            height: 24px;
            width: 24px;
            font-size: 12px;
            background: #2bd156;
            color: white;
            border-radius: 20px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
    }

    &.sendtocart {
        .cart-item {
            display: block;
            animation: xAxis 1s forwards cubic-bezier(1, 0.44, 0.84, 0.165);
            &-number{
                animation: yAxis 1s alternate forwards cubic-bezier(0.165, 0.84, 0.44, 1);
            }
        }
    }
}

<div id={`btnCart-${productId}`} className='add-to-cart-button'>
      <PrimaryButton className='w-44' onClick={() => addToCart()}>
          <span className='font-bold'>Add To Cart</span>
          <span className='cart-item'>
              <span className='cart-item-number'>2</span>
          </span>
      </PrimaryButton>
</div>

4、CSS & HTML(Shopping Cart)

.shopping-cart-group {
    &.shake {
        animation: shakeCart 0.4s ease-in-out forwards;
    }
}

@keyframes shakeCart {
    25% {
        transform: translateX(6px);
    }

    50% {
        transform: translateX(-4px);
    }

    75% {
        transform: translateX(2px);
    }

    100% {
        transform: translateX(0);
    }
}

<div id='shopCart' className='shopping-cart-group relative ml-4 text-[#E71316]'>
    <img src={ShoppingCart.src} className='cursor-pointer' onClick={() => router.push('/order/shoppingCart')} />
    <span className='absolute top-[-1rem] left-[0.7rem]'>7</span>
</div>

相关文章

  • React实现商品添加购物车动画(小圆点飞向购物车)

    1、效果图 2、首先第一步,计算出Add To Cart的Button距离顶部购物车的X轴距离和Y轴距离。动态添加...

  • Android端 仿饿了么点餐页面

    已实现的功能 * 顶部嵌套滑动逻辑 * 分类和商品级联定位 * 添加购物车动画 * 购物车弹窗 * 点击商品后的上...

  • 贝塞尔曲线的应用(二)

    购物车添加商品实现轨迹动画 先看下实现效果 分析下实现原理,起始点是添加按钮,购物车是结束点,我们把控制点的x坐标...

  • Angular学习第四天

    今天我们来做一下电商网站常见的购物车功能 实现功能,购物车相信大家都熟悉 显示商品列表 商品添加进购物车 购物车内...

  • 购物车页面和商品列表页面

    商品列表页面的布局和添加购物车到cookie中的保存实现 购物车页面的布局以及CSs样式 JS实现:购物车的实现上...

  • 8.购物车管理

    购物车管理模块是属于用户侧模块,主要有7个接口:添加商品到购物车、更新购物车商品数、移除购物车商品、查看购物车当中...

  • Vue + Vuex 实现购物车

    功能点拆分 在商品详情页点击添加购物车按钮,对应商品将传到购物车页面 购物车页面顶部商品数量展示 购物车页面商品列...

  • SSM框架学习日记(6)——购物车模块

    购物车相关接口 添加购物车,购物车列表,更新商品数量,删除购物车先新建CartController和CartSer...

  • 常见并发问题

    重复添加购物车 背景 购物车中同一商品只能有一条记录添加购物车时,如果商品已经存在,则在原来的数量上增加;如果不存...

  • 购物车动画

    今天整理一下购物车动画,整理一下,方便以后使用.咱们定外卖的的时候,添加商品,可以看一个加入购物车的动画,下面就实...

网友评论

    本文标题:React实现商品添加购物车动画(小圆点飞向购物车)

    本文链接:https://www.haomeiwen.com/subject/oqcsnrtx.html