购物车运动小球

第一步: 定义一个变量

bSys: false, //判断单个小球运动的条件

第二步:在需要的地方添加小球

                    <div className="shop">
                        <div className="cart"></div>
                        <transition
                            name="drop"
                            onBefore-enter="beforeDrop"
                            onEnter="dropping"
                            onAfter-enter="afterDrop"
                        >
                                //小球样式与状态
                            <div className="ball" v-show="bSys == item.ID">
                                <img
                                    className="inner inner-hook"
                                // :src="'http://www.ibugthree.com/' + item.img_src"
                                />
                            </div>
                        </transition>
                    </div>

 第三步:添加方法

  beforeDrop(el) {
        /* 购物车小球动画实现 */
        if (this.bSys) {
            setTimeout(function () {
                let rect = el.getBoundingClientRect(); //元素相对于视口的位置

                 //只修改x、y即可
                let x = rect.right + 180;
                let y = document.querySelector(".favorites-wrap").offsetTop - rect.top;
                

                el.style.display = "";

                el.style.webkitTransform = "translateY(" + y + "px)"; //translateY
                let inner = el.getElementsByClassName("inner-hook")[0];
                inner.style.webkitTransform = "translateX(" + x + "px)";
                inner.style.transform = "translateX(" + x + "px)";
            });
        }
    }
    dropping(el) {
        /*重置小球数量  样式重置*/
        console.log("进行中");
        el.style.transform = "translate3d(0,0,0)";
        let inner = el.getElementsByClassName("inner-hook")[0];
        inner.style.transform = "translate3d(0,0,0)";
    }
    afterDrop(el) {
        /*初始化小球*/
        if (this.bSys) {
            el.style.display = "none";
            console.log("结束");
            this.bSys = false;
        }
    }

第四步:添加css样式,定位的值需要自己根据需求稍加改变

 // 动态小球
        .shop {
            position: absolute;
            top: 100px;
            left: 150px;
        }

        .ball {
            position: absolute;
            left: 120px;
            bottom: 0px;
            z-index: 20;
            transition: all 1s cubic-bezier(0.49, -0.29, 0.75, 0.41);
            /*贝塞尔曲线*/
        }

        .inner {
            width: 80px;
            height: 80px;
            border-radius: 100px;
            transition: all 1s linear;
        }

即可实现,谢谢阅读!

喜欢就收藏评论!

                                                                        明天一定会感谢今天努力的自己!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值