国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > CSS > 正文

純CSS3大轉盤抽獎示例代碼(響應式、可配置)

2024-07-11 08:32:20
字體:
來源:轉載
供稿:網(wǎng)友

源于前段時候微信小程序最初火爆公測時段,把以前用 Canvas 實現(xiàn)的大轉盤抽獎移植成微信小程序,無奈當時小程序對 Canvas 支持不夠完善,只好降低用 CSS3 實現(xiàn)。雖然比不上 Canvas 繪圖的絢麗,但也總算完成了一個抽獎的 Demo,詳見:http://xiazai.Vevb.com/201701/yuanma/wechat-canvas_jb51.rar

事后想起,CSS3 實現(xiàn)也并不是無有益處,比如簡單、快捷、調試方便、渲染想來也是要比 Canvas 要高效的,更重要的一點是支持媒體查詢,大轉盤也可以做成響應式的。因此抽空整理,用純 CSS3 實現(xiàn)一個大轉盤抽獎 Demo 并記錄下來。

如果有類似需求并不想麻煩了解細節(jié),可移步這里——Canvas 完整的大轉盤抽獎項目(可以直接拿來用)http://xiazai.Vevb.com/201701/yuanma/canvas_jb51.rar

以下就直接貼代碼了。

代碼

HTML

<section class="gb-wheel-container" id="gbWheel"> <div class="gb-wheel-content gb-wheel-run"> <ul class="gb-wheel-line"></ul> <div class="gb-wheel-list"></div> </div> <a href="javascript:;" class="gb-wheel-btn" id="gbLottery">抽獎</a> </section>

JS

(function() { // 獎品配置 var awards = [ {'index': 0, 'text': '耳機' , 'name': 'icono-headphone'}, {'index': 1, 'text': 'iPhone' , 'name': 'icono-iphone'}, {'index': 2, 'text': '相機' , 'name': 'icono-camera'}, {'index': 3, 'text': '咖啡杯' , 'name': 'icono-cup'}, {'index': 4, 'text': '日歷', 'name': 'icono-calendar'}, {'index': 5, 'text': '鍵盤', 'name': 'icono-keyboard'} ], len = awards.length, turnNum = 1 / len; // 文字旋轉 turn 值 var gbWheel = $('gbWheel'), lineList = gbWheel.querySelector('ul.gb-wheel-line'), itemList = gbWheel.querySelector('.gb-wheel-list'), lineListHtml = [], itemListHtml = []; var transform = preTransform(); awards.forEach(function(v, i, a) { // 分隔線 lineListHtml.push('<li class="gb-wheel-litem" style="' + transform + ': rotate('+ (i * turnNum + turnNum / 2) +'turn)"></li>'); // 獎項 itemListHtml.push('<div class="gb-wheel-item">'); itemListHtml.push('<div class="gb-wheel-icontent" style="' + transform + ': rotate('+ (i * turnNum) +'turn)">'); itemListHtml.push('<p class="gb-wheel-iicon">'); itemListHtml.push('<i class="'+v.name+'"></i>'); itemListHtml.push('</p>'); itemListHtml.push('<p class="gb-wheel-itext">'); itemListHtml.push(v.text); itemListHtml.push('</p>'); itemListHtml.push('</div>'); itemListHtml.push('</div>'); }); lineList.innerHTML = lineListHtml.join(''); itemList.innerHTML = itemListHtml.join(''); function $(id) { return document.getElementById(id); }; // 旋轉 var i = 0; $('gbLottery').onclick = function() { i++; gbWheel.querySelector('.gb-wheel-content').style = transform + ': rotate('+ i * 3600 +'deg)'; } // transform兼容 function preTransform() { var cssPrefix, vendors = { '': '', Webkit: 'webkit', Moz: '', O: 'o', ms: 'ms' }, testEle = document.createElement('p'), cssSupport = {}; // 嗅探特性 Object.keys(vendors).some(function(vendor) { if (testEle.style[vendor + (vendor ? 'T' : 't') + 'ransform'] !== undefined) { cssPrefix = vendor ? '-' + vendor.toLowerCase() + '-' : ''; return true; } }); function normalizeCss(name) { name = name.toLowerCase(); return cssPrefix ? cssPrefix + name : name; } cssSupport = { transform: normalizeCss('Transform'), } return cssSupport.transform; }}());
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 上蔡县| 东源县| 宝兴县| 邹平县| 根河市| 襄垣县| 郴州市| 视频| 株洲县| 宜丰县| 香格里拉县| 临西县| 桓台县| 新乡县| 华宁县| 焦作市| 临泽县| 昌黎县| 红桥区| 麟游县| 汨罗市| 定兴县| 九台市| 桂东县| 合阳县| 股票| 中阳县| 郯城县| 灵川县| 瑞金市| 错那县| 南投县| 本溪| 辉县市| 长顺县| 荥阳市| 黑水县| 涿州市| 乌拉特后旗| 怀集县| 铜梁县|