使用面向对象封装,几句话可以实现移动端酷炫的字幕选择操作,使用$("selector").seleChar({ chars:['A','B','C','D','E','F','G','H'], callback:function(ret){ } }); 1. [代码] [JavaScript]代码 ;(function($,window,
chars:['A','B','C','D','E','F','G','H'],
callback:function(ret){
}
});
1. [代码][JavaScript]代码
;(function($,window,document,undefined){ var SelectChar = function(el,opts){ this.ele = el; this.defaults = { chars:['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'], callback:function(ret){ }, }; this.options = $.extend({},this.defaults,opts); this.eleWidth = $(this.ele).width(); this.charslength = this.options.chars.length; this.eleHeight = $(this.ele).height()*0.96; if(this.charslength < 13){ this.eleHeight = this.charslength*30; } this.everyCharHeight = this.eleHeight/this.charslength; }; SelectChar.prototype = { init:function(){ $(this.ele).css("position","relative"); this.show(); return this; }, show:function(){ var cnt = ''; cnt += '<section id="seleMask" style="width:'+this.eleWidth+'px;height:'+this.eleHeight+'px;position:absolute;top:0;left:0;z-index:9999">'; cnt += '<div id="bigChar" style="position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);-webkit-transform: translate(-50%,-50%);width: 70px;height: 70px;line-height: 70px;text-align: center;background: rgba(0,0,0,.7);border-radius: 5px;color: #fff;font-size: 32px;z-index: 999;display:none"></div>'; cnt += '<div id="smallChar" style="position: absolute;top:0;right:0;width:40px;height:'+this.eleHeight+'px;cursor:pointer">'; for(var i = 0;i<this.charslength;i++){ cnt += '<div style="width: 100%;height:'+this.everyCharHeight+'px;line-height:'+this.everyCharHeight+'px;text-align: center;font-size: 10px;color: #999;">'+this.options.chars[i]+'</div>'; } cnt == '</div></section>'; $(this.ele).prepend(cnt); this.addEvent(); return this; }, hide:function(){ return this; }, addEvent:function(){ var eve,options,result; eve = this.everyCharHeight; options = this.options; document.getElementById("smallChar").addEventListener("touchstart",function(touch){ $("#bigChar").show(); if(touch.touches[0].pageY){ var _val = Math.floor((touch.touches[0].pageY - $(this).offset().top)/eve); result = options.chars[_val]; $("#bigChar").html(result); } },false); document.getElementById("smallChar").addEventListener("touchmove",function(touch){ if(touch.touches[0].pageY){ var _val = Math.floor((touch.touches[0].pageY - $(this).offset().top)/eve); result = options.chars[_val]; $("#bigChar").html(result); } },false); document.getElementById("smallChar").addEventListener("touchend",function(touch){ $("#bigChar").hide(); if(result){ options.callback(result); } },false); return this; }, }; $.fn.seleChar = function(parse){ var selectchar = new SelectChar(this,parse); selectchar.init(); }; })(jQuery,window,document);