Vue實現購物車小球動畫

2022-05-04 16:09:05 字數 1994 閱讀 4889

思路:  

1.因頁面分元件分的比較細,由圖可知是元件5到元件4的聯動. 如果利用元件間通訊需要 子元件5 -->元件3-->所有元件的父元件-->元件4, 層級略顯複雜,所以使用了vuex狀態管理管理資料.

2.動畫處理:

利用vue的 transition 標籤來處理動畫.

小球運動的軌跡是一條拋物線, 可使x軸做勻速運動, y軸貝塞爾曲線, 可以考慮設定兩個巢狀的dom來控制執行軌跡.外層控制y軸動畫, 內層控制x軸動畫.

因小球落點是同乙個位置, 可以將小球設定到落點位置, 動態獲取初始值來決定小球的運動軌跡.

3.如果連續點選小球, 則頁面上可能顯示多個小球, 所以需要設定多個小球保證頁面上可以顯示多個小球.

結構圖:

//內層小球控制x軸運動軌跡,內外層運動方式是不一樣的, y軸貝塞爾曲線, x軸勻速.

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

inner.style.webkittransform = `translate3d($px, 0, 0)`

inner.style.transform = `translate3d($px, 0, 0)`}}

},enter (el) )

},afterenter (el) }}

store裡面的moudle (balls.js):

const balls =, , , , ],

dropball:

},mutations: ) ,

changedropball (state, ball)

}}export

default balls

增加商品數量(即點選+號)觸發小球動畫的頁面 (cartcontrol.vue):

computed: )

},methods: )

this.changedropball(this

.balls[i])

return

} }}}

此dome是根據參考黃軼老師的仿餓了嗎課程改編而來~

vue之加入購物車小球動畫

1.問 重繪和重排問題,如 let rf el.offsetheight。答 手動獲取這個值,會觸發瀏覽器重繪。2.問 為什麼要準備5個小球,如balls 答 主要是防止過快出現bug。3.問 js 中ball.show設定為false。答 主要用於修改dom元素的v show的值 如下 templ...

購物車動畫

金幣終點的x位置 cgfloat positionx 290.0f 終點x 金幣終點的y位置 cgfloat positiony 500.0f 終點y cgmutablepathref path cgpathcreatemutable 金幣的起始x位置 int fromx 20 arc4random...

Vue購物車例項

這是效果圖 看起來很簡單是不是 之前一直寫jquery 總是想著 dom 操作 思維感覺沒有切換過來 想了很久,最後使用vue的屬性進行控制,實現了多選計算屬性的功能 直接上原始碼 編號商品名稱 商品單價 購買數量 操作 移除 總價 購物車為空 這個路徑要修改,就不多說了 data isallche...