站長資訊網
        最全最豐富的資訊網站

        vuejs 可以做轉盤嗎

        vuejs可以做轉盤,其實現方法:1、創建抽獎按鈕;2、獲取轉盤應該停止的位置;3、與后臺交互;4、在動畫結束后停在步驟2設置的地方;5、設置提示中獎解鎖功能。

        vuejs 可以做轉盤嗎

        本文操作環境:windows7系統、Vue2.9.6版、Dell G3電腦。

        vuejs 可以做轉盤嗎?

        Vue中可配置的圓形抽獎轉盤組件

        一、整個抽獎流程的思路分析:

        1. 點擊了轉盤正中間的指針(即開始抽獎按鈕),判斷是否可以轉動(具體邏輯封裝在canBeRotated()里–①當前擁有的抽獎次數是否大于0②現在是否正在轉動著(被鎖著)),判斷通過則進行下一步, 否則彈出相應提示。
        2. 獲取轉盤應該停止的位置,應該與后臺交互,但這里僅作演示用途, 本地隨機抽取0~5。
        3. 與后臺交互成功獲取到該停止的位置后,鎖定轉盤且減少抽獎次數。
        4. 告訴轉盤組件,開始轉動了,并且動畫結束后停在步驟2設置的地方。
        5. 轉盤轉動,停在步驟3設置的地方后再提示中獎,解鎖。

        二、圓形抽獎轉盤組件需要做的事情

        1. 可以自定義每一格轉盤的背景顏色,外邊框的顏色。(turntableStyleOption屬性)
        2. 轉盤的大小與位置。(在調用時,給組件加個class,代碼里為turntable
        3. 自定義這個轉盤運轉起來要轉過的圈數。(rotateCircle屬性)
        4. 可以自定義運轉動畫的時長。(duringTime屬性)
        5. 通過接收到父組件傳遞過來的獎品信息(prizeData),顯示在每一格轉盤的位置。(計算要根據圓心旋轉的角度getRotateAngle()方法)
        6. 被父組件調用后就開始轉動,并在指定位置停下的方法(rotate),結束動畫后告訴父組件已停下。
        7. 獎品的名稱和圖片可以自定義樣式。

        三、頁面預覽

        vuejs 可以做轉盤嗎

        四、基礎用法

        1. 引用
        import roundTurntable from './components/roundTurntable';
        1. 聲明
        components: {   roundTurntable },
        1. 調用
        <round-turntable   ref="roundTurntable"   :prizeData="prizeData"   :rotateCircle="rotateCircle"   :duringTime="duringTime"   :turntableStyleOption="turntableStyleOption"   @endRotation="endRotation"   class="turntable">     <template slot="item" slot-scope="scope">       <p class="turntable-name">{{ scope.item.prizeName }}</p>       <p class="turntable-img">         <img :src="scope.item.prizeImg">       </p>     </template> </round-turntable>
        data() {   return {     // 轉盤上的獎品數據     prizeData: [    {      id: 1,      prizeName: '2000元京東券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/1.png',    },    {      id: 2,      prizeName: '300元京東券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/7.png',    },    {      id: 3,      prizeName: '50個比特幣',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/3.png',    },    {      id: 4,      prizeName: '50元話費券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/4.png',    },    {      id: 5,      prizeName: '100元話費券',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/5.png',    },    {      id: 6,      prizeName: '100個比特幣',      prizeImg: 'http://demo.sc.chinaz.net/Files/DownLoad/webjs1/201803/jiaoben5789/images/6.png',    }   ],   // 轉動的圈數   rotateCircle: 6,   // 轉動需要持續的時間(s)   duringTime: 4.5,   // 轉盤樣式的選項   turntableStyleOption: {     // 背景色     prizeBgColors: ['#AE3EFF', '#4D3FFF', '#FC262C', '#3A8BFF', '#EE7602', '#FE339F'],     // 轉盤的外邊框顏色     borderColor: '#199301',   },  } }, methods: {   // 已經轉動完轉盤觸發的函數    endRotation() {       // 提示中獎       alert(`恭喜您獲獎啦,您的獎品是:${this.prizeData[this.prizeIndex].prizeName}`);    }, },
        .turntable {   position: absolute;   left: calc(50% - 200px);   top: calc(50% - 200px);   width: 400px;   height: 400px; } .turntable-name {   /*background: pink;*/   position: absolute;   left: 10px;   top: 20px;   width: calc(100% - 20px);   font-size: 26px;   text-align: center;   color: #fff; }   .turntable-img {   position: absolute;   /*要居中就要50% - 寬度 / 2*/   left: calc(50% - 80px / 2);   top: 60px;   width: 80px;   height: 80px;   img {     display: inline-block;     width: 100%;     height: 100%;   } }

        五、roundTurntable組件的屬性說明

        參數 說明 類型 默認值
        ref 獲取這組件的dom節點,調用子組件的開始轉動動畫方法要用到this.$refs[refName].rotate(index) string
        prizeData 顯示在轉盤上的獎品數據 array
        rotateCircle 轉盤要轉過的圈數 number 6
        duringTime 轉動需要持續的時間(單位為秒s number 4.5
        turntableStyleOption 轉盤的樣式選項(背景色、外邊框顏色) object { prizeBgColors: ['#AE3EFF', '#4D3FFF', '#FC262C', '#3A8BFF', '#EE7602', '#FE339F'], borderColor: '#199301' }
        class 用來定義轉盤位置和大小的樣式 string

        六、roundTurntable組件的事件說明

        事件名稱 說明 回調參數
        endRotation 轉盤停下來后觸發的事件回調

        七、完整項目代碼

        https://github.com/LiaPig/vue-round-turntable

        使用到的獎品圖片和指針圖片均來自:

        http://sc.chinaz.com/jiaobendemo.aspx?downloadid=12018113053246

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲综合欧美精品一区二区| 亚洲欧美日韩国产精品影院| 欧美精品播放| 久久精品国产半推半就| 亚洲精品无码久久久久| 精品久久综合1区2区3区激情| 国产欧美国产精品第一区| 亚洲国产精品无码成人片久久| 精品国产成人国产在线观看| 久久国产精品国产自线拍免费| 久久久国产乱子伦精品作者| 亚洲精品天堂成人片?V在线播放| 国产精品无码一区二区在线| 欧美精品/日韩精品/国产精品| 国产精品对白交换视频| 亚洲愉拍99热成人精品热久久| 欧美精品成人3d在线| 国精品产露脸自拍| 最新国产精品亚洲| 国产亚洲综合成人91精品| 精品一区二区三区无码免费视频 | 亚洲AV乱码久久精品蜜桃| 欧美精品丝袜久久久中文字幕| 国产区精品福利在线观看精品| 国产精品成人无码久久久久久 | 久久99精品久久久久久水蜜桃| 91精品国产自产在线老师啪| 欧美性videofree精品| 久久精品这里热有精品| 久久夜色精品国产亚洲| 国内精品免费视频精选在线观看| 8x福利精品第一导航| 国产精品亚洲片在线va| 精品国产欧美一区二区| 国产亚洲综合成人91精品| 欧美性videofree精品| 永久免费精品视频| 国产成人久久精品麻豆一区| 国产精品成人免费观看| 国产精品一区二区三区免费| 精品午夜国产人人福利|