最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤抽獎(jiǎng)

 更新時(shí)間:2020年10月16日 17:14:11   作者:Kevinblant  
這篇文章主要為大家詳細(xì)介紹了vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤抽獎(jiǎng)的具體代碼,供大家參考,具體內(nèi)容如下

vue-lucky-draw

移動(dòng)端九宮格轉(zhuǎn)盤抽獎(jiǎng)vue組件,中獎(jiǎng)的獎(jiǎng)品數(shù)據(jù)由接口決定。

效果圖

抽獎(jiǎng)

因?yàn)橹歇?jiǎng)的結(jié)果是后臺(tái)返回的,所以要考慮轉(zhuǎn)盤的最終停下來的位置必須是在對(duì)應(yīng)后臺(tái)返回結(jié)果的獎(jiǎng)品的位置,也就是要模擬出這個(gè)中獎(jiǎng)的過程(所以所謂的抽獎(jiǎng)都是騙人的,嘿嘿)。先要寫出移動(dòng)的背景框?qū)?yīng)的各個(gè)位置的css,然后動(dòng)態(tài)切換class來使其呈現(xiàn)出轉(zhuǎn)動(dòng)效果。明白了過程就好寫了。

中間的按鈕用的是css3的animation,我這個(gè)獎(jiǎng)品是合在了一張圖上,你也可以分開成8張小圖,那樣需要寫更多的樣式。

// 抽獎(jiǎng)
 handleStart() {
 if (this.isRuningLucky) {
  return Toast("正在抽獎(jiǎng)中...");
 }
 if (isNaN(Number(this.initSpeed))) {
  return false;
 }
 this.speed = this.initSpeed;
 // 開始抽獎(jiǎng)
 this.isRuningLucky = true;
 this.time = Date.now();
 this.drawAward();
 Toast("開始抽獎(jiǎng)");
 },
 drawAward() {
 // 請(qǐng)求接口,模擬一個(gè)抽獎(jiǎng)數(shù)據(jù)(假設(shè)請(qǐng)求時(shí)間為2s)
 setTimeout(() => {
  this.award = {
  id: "4"
  };
  console.log("返回的抽獎(jiǎng)結(jié)果是", this.award);
 }, 2000);
 this.move();
 },
 move() {
 let timer = setTimeout(() => {
  this.current++;
  if (this.current > 7) {
  this.current = 0;
  }
  // 若抽中的獎(jiǎng)品id存在,則開始減速轉(zhuǎn)動(dòng)
  if (this.award.id && (Date.now() - this.time) / 1000 > 2) {
  console.log("獎(jiǎng)品出來了");
  this.speed += this.diff; // 轉(zhuǎn)動(dòng)減速
  
  // 若轉(zhuǎn)動(dòng)時(shí)間超過4秒,并且獎(jiǎng)品id等于小格子的獎(jiǎng)品id,則停下來
  if (
   (Date.now() - this.time) / 1000 > 4 &&
   this.award.id == this.awards[this.current].id
  ) {
   clearTimeout(timer);

   setTimeout(() => {
   this.isRuningLucky = false;
   // 這里寫停下來要執(zhí)行的操作(彈出獎(jiǎng)品框)
   Toast(
    "您抽中的獎(jiǎng)品是" + this.awards[this.current].name + ",獎(jiǎng)品id是" + this.awards[this.current].id
   );
   }, 400);
   return;
  }

  // 若抽中的獎(jiǎng)品不存在,則加速轉(zhuǎn)動(dòng)
  } else {
  if (this.speed >= 50) {
   this.speed -= this.diff; // 轉(zhuǎn)動(dòng)加速
  }
  }

  this.move();
 }, this.speed);
 },

號(hào)碼滾動(dòng)

使用無序列表將號(hào)碼列表(正常是從接口獲?。┭h(huán)出來,通過設(shè)置定時(shí)以及控制transition的屬性,來達(dá)到無縫連接的效果。如果樣式(li高度)改變的話,需要對(duì)定時(shí)器時(shí)間進(jìn)行調(diào)節(jié)(控制下一個(gè)顯示的時(shí)間)。

// 中獎(jiǎng)名單滾動(dòng)
 scroll() {
 this.animate = true;
 let timer = setTimeout(() => {
  this.list.push(this.list[0]);
  this.list.shift();
  this.animate = false;
 }, 500);
 }

功能代碼請(qǐng)移步到我的GitHub
可以clone項(xiàng)目 npm i , npm run dev,喜歡的話點(diǎn)個(gè)星吧_~

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

蛟河市| 三门县| 贵州省| 浦县| 调兵山市| 怀化市| 泗水县| 浙江省| 烟台市| 淳化县| 博野县| 苗栗县| 桦南县| 沁源县| 阿坝| 陈巴尔虎旗| 开化县| 永丰县| 友谊县| 武汉市| 遂昌县| 文化| 关岭| 旺苍县| 即墨市| 枞阳县| 彰化县| 永兴县| 福安市| 静宁县| 弥勒县| 泸溪县| 东宁县| 五华县| 九江县| 塘沽区| 吉安市| 雅江县| 平山县| 本溪市| 正阳县|