国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

vue 2.0 購物車小球拋物線的示例代碼

來源:懂視網 責編:小采 時間:2020-11-27 22:20:40
文檔

vue 2.0 購物車小球拋物線的示例代碼

vue 2.0 購物車小球拋物線的示例代碼:本文介紹了vue 2.0 購物車小球拋物線的示例代碼,分享給大家,具體如下: 備注:此項目模仿 餓了嗎。我用的是最新的Vue, 視頻上的一些寫法已經被廢棄了。 布局代碼 <div class=ball-container> <transition name=drop
推薦度:
導讀vue 2.0 購物車小球拋物線的示例代碼:本文介紹了vue 2.0 購物車小球拋物線的示例代碼,分享給大家,具體如下: 備注:此項目模仿 餓了嗎。我用的是最新的Vue, 視頻上的一些寫法已經被廢棄了。 布局代碼 <div class=ball-container> <transition name=drop

本文介紹了vue 2.0 購物車小球拋物線的示例代碼,分享給大家,具體如下:

備注:此項目模仿 餓了嗎。我用的是最新的Vue, 視頻上的一些寫法已經被廢棄了。

布局代碼

<div class="ball-container">
 <transition name="drop"
 v-for="ball in balls"
 @before-enter="beforeDrop"
 @enter="dropping"
 @after-enter="afterDrop">
 <div v-show="ball.show" class="ball" v-bind:css="false">
 <div class="inner inner-hook" ></div>
 </div>
 </transition>
</div>

css代碼(使用stylus寫法)

.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.41)
 .inner
 width 16px
 height 16px
 border-radius 50%
 background-color rgb(0,160,220)
 transition all 0.4s linear

js代碼

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) {
 ball.show = true;
 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);
 el.style.webkitTransform = `translate3d(0,${y}px,0)`;
 el.style.transform = `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)`;
 }
 }
 },
 dropping(el) {
 /* eslint-disable no-unused-vars */
 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)';
 });
 },
 afterDrop(el){
 let ball = this.dropBalls.shift();
 if(ball) {
 ball.show = false;
 el.style.display = 'none';
 }
 }
}

getBoundingClientRect()。方法請閱讀這篇文章//www.gxlcms.com/article/134208.htm

說明:

goods 是一個組件,里面包含menu(div) , foods(div), shopcart(購物車組件)。其中foods 包含cartcontrol(即小球組件)

組件之間的通信:說明:菜單和商品

第1個問題:小球,需要獲取所點擊的商品的數量。

利用Vue的props,將foods值傳遞給cartcontrol。但是這樣有個問題。即子組件更新,無法同步回父組件。且,在子組件中,對food注冊了一個count屬性,此屬性也無法同步回父組件(goods)。

解決方法:

導入全局的Vue。

利用Vue.set(target,key,value); 對 target注冊count;

第2個問題:小球點擊,將所點擊過的商品數目傳遞給 shopcart。

在goods的 computed:{} 定義一個方法,將該方法以props的方式,傳遞給shopcart。

因為,shopcart,對傳遞過去的數據僅數據運算(不會改變)。因此不用同步會父組件。

第3個問題:購物車小球做拋物線運動。

對于購物車小球做拋物線運動。首先,落點都在購物車,小球則是隨機的。要做拋物線運動,就要獲取,所點擊的 + 號的x,y位置。其次,拋物線運動,只有在enter--> enter-to這段期間有,在leave--> leave-to 期間是沒有的,因此,需要用Vue提供的鉤子函數。

獲取 + 號x,y 位置:

小球(cartcontrol)是子組件。需要把數據傳遞給 goods(父組件)。可以使用Vuex,或者直接使用事件總線。對于餓了嗎demo。直接使用事件總線。

創建一個 空的Vue。在 cartcontrol 中 ,通過 Bus.$emit(key, ... arg); 注冊一個監聽,然后再父組件 通過Bus.$on(key, function(... arg));監聽此方法。將所操作的 dom 對象傳遞過去即可

Vue提供的鉤子

這里要說明一點,Vue在他的官網,對于只有過度的js,done是必須的,當我加上done的時候,after-enter方法無法被執行。
還有1個問題,Vue官網推薦,只有過度效果,在做過度動畫的元素上加上v-bind:class='false'。之前沒加,出現了,小球只能在第1次點擊的地方做過度效果。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue 2.0 購物車小球拋物線的示例代碼

vue 2.0 購物車小球拋物線的示例代碼:本文介紹了vue 2.0 購物車小球拋物線的示例代碼,分享給大家,具體如下: 備注:此項目模仿 餓了嗎。我用的是最新的Vue, 視頻上的一些寫法已經被廢棄了。 布局代碼 <div class=ball-container> <transition name=drop
推薦度:
標簽: VUE 購物車 代碼
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 精品日本一区二区三区在线观看 | 欧美人与动性xxxxx杂性 | 91亚洲国产成人久久精品网址 | 午夜视频免费在线观看 | 亚洲欧美日韩精品 | 日本久久香蕉一本一道 | 欧美成人高清在线视频大全 | 欧美视频在线免费 | 亚洲欧美另类日本 | 亚洲欧美一区二区三区九九九 | 国产精品va在线观看无 | 免费日本黄色网址 | 91在线一区二区 | 国产精品久久久久免费 | 国产又黄又a又潮娇喘视频 国产淫视频 | 欧美亚洲综合网 | 亚洲 欧美综合小说区图片区 | 精品国产免费人成在线观看 | 一区二区三区四区免费视频 | 精品免费国产一区二区女 | 国产一区二区三区在线看 | 福利视频一区 | 欧美日韩v | 久久精品综合国产二区 | 韩国演艺圈一区二区三区 | 亚洲欧美日本另类激情 | 日本不卡视频在线观看 | 在线视频 日韩 | 亚洲一二三区视频 | 国产欧美日韩精品综合 | 国产视频资源在线观看 | 欧美亚洲日本国产 | 北条麻妃手机在线 | 在线视频欧美日韩 | 欧美 日韩 亚洲另类专区 | 99久久免费国产精精品 | 久久精品一区二区三区四区 | 亚洲视频在线观 | 全免费毛片在线播放 | 欧美视频网站在线观看 | 国产在线视频不卡 |