android 购物车抛物线,Vue购物车抛物线

该博客主要介绍了使用CSS、HTML和JavaScript结合Vue实现购物车抛物线动画的代码。通过设置元素样式和运用贝塞尔曲线,实现小球从商品位置到购物车的抛物动画效果,还包含添加商品计数、小球动画实现及重置等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

css

.shop{

position: fixed;

top: 300px;

left: 40px;

}

.ball{

position: fixed;

left: 32px;

bottom: 22px;

z-index: 200;

transition: all 0.4s cubic-bezier(0.49, -0.29, 0.75, 0.41); /*贝塞尔曲线*/

}

.inner{

width: 16px;

height: 16px;

border-radius: 50%;

background-color: rgb(0,160,220);

transition: all 0.4s linear;

}

.cart{

position: fixed;

bottom: 22px;

left: 32px;

width: 30px;

height: 30px;

background-color: rgb(0,160,220);

color: rgb(255,255,255);

}

html

  • {{item.text}}

    {{item.price}}

    添加

{{count}}

javascript

new Vue({

el:"#app",

data:{

count: 0,

items:[{

text: "苹果",

price: 15

}, {

text: "香蕉",

price: 15

}],

//小球 设为3个

balls: [ { show: false },

{ show: false },

{ show: false }, ],

dropBalls:[],

},

methods:{

additem(event){

this.drop(event.target);

this.count ++;

},

drop(el){ //抛物

for(let i=0;i

let ball= this.balls[i];

if(!ball.show){

ball.el=el;

this.dropBalls.push(ball);

return;

}

}

},

beforeDrop(el) {/* 购物车小球动画实现 */

let count = this.balls.length;

while (count--) {

let ball = this.balls[count];

if (ball.show) {

let rect = ball.el.getBoundingClientRect(); //元素相对于视口的位置

let x = rect.left - 32;

let y = -(window.innerHeight - rect.top - 22); //获取y

el.style.display = '';

el.style.webkitTransform = 'translateY('+y+'px)'; //translateY

el.style.transform = 'translateY('+y+'px)';

let inner = el.getElementsByClassName('inner-hook')[0];

inner.style.webkitTransform = 'translateX('+x+'px)';

inner.style.transform = 'translateX('+x+'px)';

}

}

},

dropping(el, done) { /*重置小球数量 样式重置*/

let rf = el.offsetHeight;

el.style.webkitTransform = 'translate3d(0,0,0)';

el.style.transform = 'translate3d(0,0,0)';

let inner = el.getElementsByClassName('inner-hook')[0];

inner.style.webkitTransform = 'translate3d(0,0,0)';

inner.style.transform = 'translate3d(0,0,0)';

el.addEventListener('transitionend', done);

},

afterDrop(el) { /*初始化小球*/

let ball = this.dropBalls.shift();

if (ball) {

ball.show=false;

el.style.display = 'none';

}

}

}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值