求解! vue2.0實現購物車小球掉落特效第一次點選動畫失效(男默女淚的bug!)
點選新增按鈕時有一個小球掉落到購物車的特效,第一次點選時動畫特效沒有出來,且沒有進入afterEnter方法。後面點選都沒有問題。
效果如圖:(第一次點選)
但是我在enter方法裡面下了一個斷點之後就有動畫效果,且進入了afterEnter。效果如下:
希望大神幫我看看!非常感謝!
程式碼如下:
<div class="ball-container"> <div v-for="(ball, index) in balls" :key="index"> <transition name="drop" @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter"> <div v-show="ball.show" class="ball"> <div class="inner inner-hook"></div> </div> </transition> </div> </div>
data() { return { balls: [ { show: false }, { show: false }, { show: false }, { show: false }, { show: false } ], dropBalls: [] }; }
methods: { drop(el) { //觸發一次事件就會將所有小球進行遍歷 for (let i = 0; i < this.balls.length; i++) { let ball = this.balls[i]; if (ball.show === false) { ball.show = true; ball.el = el; //設定小球的el屬性為一個dom物件 this.dropBalls.push(ball); return; //此處return終結函式,這意味著每次觸發事件,dropBalls內只增加一個ball } } }, beforeEnter(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; //小球掉落X軸起點 let y = -(window.innerHeight - rect.top - 22); //小球掉落Y軸起點,向下為負 el.style.display = ''; el.style.webkitTransform = `translate3d(0, ${y}px,0)`; /* Safari 和 Chrome */ el.style.transform = `translate3d(0, ${y}px,0)`; //旋轉div元素 // 處理內層動畫 let inner = el.getElementsByClassName("inner-hook")[0]; inner.style.webkitTransform = `translate3d(${x}px, 0, 0)`; inner.style.transform = `translate3d(${x}px,0,0)`; } } }, enter(el, done) { //關閉ESlint語法監測,因為ES6語言規範會讓被申明卻未被呼叫的變數報錯 /* eslint-disable no-unused-vars */ let rf = el.offestHeight; //申明rf是為了觸發瀏覽器的重排 this.$nextTick(() => { //修改資料之後立即使用這個方法,獲取更新後的 DOM。 el.style.webkitTransform = 'translate3d(0, 0, 0)'; /* Safari 和 Chrome */ el.style.transform = 'translate3d(0, 0, 0)'; //旋轉div元素 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為了知道過渡的完成,否則無法進入到afterEnter中 }); }, afterEnter(el) { let ball = this.dropBalls.shift(); //把陣列的第一個元素從其中刪除,並返回第一個元素的值。 if (ball) { ball.show = false; el.style.display = 'none'; //隱藏小球 } } }
.ball-container {
.ball {
position: fixed;
left: 32px;
bottom: 22px;
z-index: 200;
transition: all 0.4s cubic-bezier(0.49,-0.29,0.75, 0.14); //貝塞爾曲線
.inner {
width: 16px;
height: 16px;
border-radius: 50%;
background: rgb(0, 160, 220);
transition: all 0.4s linear
}
}
}
程式碼複製可用!
相關推薦
求解! vue2.0實現購物車小球掉落特效第一次點選動畫失效(男默女淚的bug!)
點選新增按鈕時有一個小球掉落到購物車的特效,第一次點選時動畫特效沒有出來,且沒有進入afterEnter方法。後面點選都沒有問題。 效果如圖:(第一次點選) 但是我在enter方法裡面下了一個斷點之後就有動畫效果,且進入了afterEnter。效果如下: 希望大
Vue2.0實現購物車示例
簡介 vue.js是由華人尤雨溪開發的一套MVVM框架。vue.js 的核心是一個允許你採用簡潔的模板語法來宣告式的將資料渲染進 DOM 的系統,它非常適用於具有複雜互動邏輯的前端應用,如一些單頁應用程式,有很多表單操作,頁面中的內容需要根據使用者的操作動態變
使用vue2.0實現購物車和地址選配功能
涉及知識: 指定的使用:v-model v-text v-show v-if v-bind v-for v-on v-model:(雙向功能)主要在表單中使用,文字框,下拉框,單選,複選,textarea v-text:更多用於文字渲染,和{{}}是一個意思,若頁面沒載
vue2.0 實現導航守衛 --- 齊梟飛 前端開發攻城獅(路由守衛) 使用vue-router+vuex進行導航守衛
路由跳轉前做一些驗證,比如登入驗證,是網站中的普遍需求。 對此,vue-route 提供的 beforeRouteUpdate 可以方便地實現導航守衛(navigation-guards)。 導航守衛(navigation-guards)這個名字,聽起來怪怪的
揭祕月薪最容易過萬的工作,男默女淚!
近期,前程無憂發起了“2017年職場人薪資滿意度調查”,在本次調查的受訪者中,超5成的人表示自己已經月薪過萬了。而在月薪過萬的受訪者中,22.2%的受訪者工作1年月薪就過萬,65.5%的受訪者工作3年內月薪破了萬,有88.1%的受訪者畢業後工作五年內月薪
Android ViewPager實現滑動切換頁面+底部tab點選切換頁面(類微信首頁)
目錄:1.實現功能概述2.程式碼實現 1.實現功能概述實現了滑動更換頁面同時切換底部Tab的圖示、文字的顏色,同時也支援點選底部Tab達到切換頁面的效果,有點類似微信首頁佈局 外帶實現toolbar overflow選單顯示圖示。 2.程式碼實現 2.1 效果截圖(資源來源
JS實現點選複製功能(完美解決移動端可用)
先看一下效果圖 使用此方法不需要轉換什麼<p>標籤,直接就使用<textarea>標籤,就是把它的樣式修改了一下,將背景和邊框都改為你要的顏色就可以了 上程式碼: //
在0.2秒時間間隔內多次點選只響應一次點選事件
[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:btn]; [self performSelector:@selecto
Vue2.0實現高仿餓了麼專案裡的小球飛入動畫
在學習Vue.js高仿餓了麼專案的過程中,有一個小球飛入購物車的動畫效果。專案是基於vue1.0的,如果是vue2.0的專案,該如何實現呢?自己也花時間研究了一會,從迷惑不解,各種嘗試未果,到後來咬文嚼字研讀vue 2.0官網關於過渡的章節,再到最終實現效果,心情十分愉悅,同
vue2.0實現圖片加載失敗默認顯示圖片
bsp asset mage res highlight return ner url onerror <div class="bg"> <img :src="goods.phoneFloorAd.resUrl" :onerror="error
vue2.0 實現click點擊當前li,動態切換class
一行 for ont pla false style function float del <template> <div> <ul> <li v-for="(item,$index) in items" @cli
利用Vue.js2.0實現購物車和地址選配功能
根據慕課網-利用Vue2.0實現購物車和地址選配功能教程,通過利用Vue2.0來實現電商平臺的簡單功能。 vue中的$http請求服務. 通過呼叫http服務,對.json檔案傳送http請求,通過遍歷陣列資料完成頁面渲染 引入vue-reso
基於vue2.0實現仿百度前端分頁效果(二)
前言 上篇文章中,已經使用vue實現前端分頁效果,這篇文章我們單獨將分頁抽離出來實現一個分頁元件 先看實現效果圖 程式碼實現 按照慣例,我們在凍手實現的時候還是先想一想vue實現元件的思路 1、需要提前設定哪些引數需要暴露出來給父元件傳遞 <Paging
vue2.0 實現富文字編輯器功能
前端富文字編譯器使用總結: UEditor:百度前端的開源專案,功能強大,基於 jQuery,但已經沒有再維護,而且限定了後端程式碼,修改起來比較費勁 bootstrap-wysiwyg:微型,易用,小而美,只是 Bootstrap + jQuery... kindEditor:功能強大,程
vue2.0 實現漢字A-Z排序與手機通訊錄效果
先上一張效果圖: 列表html template (使用 ydui移動端UI , 地址:http://vue.ydui.org/) <yd-cell-group v-for="item in memberList" :title="item
vue2.0實現點擊後顯示,再次點擊隱藏
all element cli html glob .com 狀態 right sna 描述。點擊系統切換,彈出系統切換框。再次點擊系統切換,隱藏。點擊其他地方。也會隱藏 在layout.vue中寫的html代碼 1、在main.js中寫入全局函數 // 定義全局點擊
element-ui+vue2.0 實現登入並實現一週內記住密碼
1.檔案目錄 2.主頁index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="
vue2.x實現購物車
看到網上vue實現購物車一個demo,但是發現問題挺多的,一些瀏覽器相容性也不好,還有一些寫法過於繁瑣,所以改寫了該demo重新發布,廢話不多說,直接貼程式碼. <!DOCTYPE html> <html> <head> <meta
詳解基於Vue2.0實現的移動端彈窗(Alert, Confirm, Toast)元件
wc-messagebox 基於 vue 2.0 開發的外掛 包含 Alert, Confirm, Toast, Prompt 仿照 iOS 原生UI(樣式來源: MUI) 一些想法 剛開始的時候想要用現成的彈窗元件來著, 但是查詢一圈沒有發現比較合適專
vue2.0 實現漢字A-Z排序與手機通訊錄效果
先上一張效果圖:列表html template (使用 ydui移動端UI , 地址:http://vue.ydui.org/)<yd-cell-group v-for="item in memberList" :title="item.letter" :id=