1. 程式人生 > >【餓了麼】—— Vue2.0高仿餓了麼核心模組&移動端Web App專案爬坑(二)

【餓了麼】—— Vue2.0高仿餓了麼核心模組&移動端Web App專案爬坑(二)

 methods: {
        dropMove(el) {
        //    console.log(el)
           for(let i=0; i<this.balls.length; i++) {
               let ball = this.balls[i];
               if(!ball.show) {
                  ball.show = true;
                  ball.el = el;
                  this.dropBalls.push(ball);
                  
return; } } }, beforeEnter(el, done) { 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 //ball-container left:32 let y = -(window.innerHeight - rect.top -22); el.style.display = ''; el.style.transform = `translate3d(0,${y}px,0)`;//外層元素縱向移動 el.style.webkitTransform = `translate3d(0,${y}px,0)`; let inner
= el.getElementsByClassName('inner-hook')[0];//內層元素橫向移動 inner.style.webkitTransform = `translate3d(${x}px, 0, 0)`; inner.style.transform = `translate3d(${x}px, 0, 0)`; // console.log(el); } } }, dropEnter(el, done) { /*手動取到offsetHeight, 觸發瀏覽器重繪*/ let rf = el.offsetHeight; this.$nextTick(() => { //樣式重置回來 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) // Vue為了知道過渡的完成,必須設定相應的事件監聽器。它可以是transitionend或 animationend }) // console.log(el); }, afterEnter(el) { let ball = this.dropBalls.shift(); if(ball) { ball.show = false; el.style.display = 'none'; } // console.log(el); }