/* 通用插件库 create time : 2014-07-22 update time : 2015-11-18 author : trueland development department -------------------目录 ------------------- ★ 无缝滚动插件 ★ 下拉菜单 ★ 选项卡 ★ placeholder 兼容处理 ------------------------------------------- */ ;(function($){ /* ---------------------------------------------------------------------------------------- 元素垂直居中 how to use 默认已经处理 ---------------------------------------------------------------------------------------- */ $.fn.center=function(){ return this.each(function(){ var $this=$(this), parent=$this.parent(), toppos, topmargin, leftmargin, resizetimeout; if(parent.is("body:not(.root-height-set)")){ $("html,body").css("height","100%").addclass("root-height-set"); } if($this.css("position")==="absolute" || $this.css("position")==="fixed"){ toppos="50%"; topmargin="-"+math.round($this.outerheight()/2)+"px"; leftmargin="-"+math.round($this.outerwidth()/2)+"px"; $this.css({"left":"50%","margin-left":leftmargin}); }else{ toppos=math.floor((parent.height()-$this.outerheight())/2); topmargin="auto"; $this.css({ "display":"block", "position":"relative", "margin-left":"auto", "margin-right":"auto" }); } $this.css({"top":toppos,"margin-top":topmargin}); $(window).resize(function(){ if(resizetimeout){ cleartimeout(resizetimeout); } resizetimeout=settimeout(function(){ if($this.css("position")==="absolute"){ topmargin="-"+math.round($this.outerheight()/2)+"px"; leftmargin="-"+math.round($this.outerwidth()/2)+"px"; $this.css({"margin-left":leftmargin,"margin-top":topmargin}); }else{ toppos=math.floor((parent.height()-$this.outerheight())/2); $this.css("top",toppos); } },150); }); }); } // --------- ie7 调用垂直居中 --------------- $(window).load(function() { if (navigator.appname == "microsoft internet explorer") { var browser=navigator.appname var b_version=navigator.appversion var version=b_version.split(";"); var trim_version=version[1].replace(/[ ]/g,""); if(browser=="microsoft internet explorer" && trim_version=="msie7.0"){ if($(".vcenter").length>0) $(".vcenter").center(); } } }); /* ---------------------------------------------------------------------------------------- 无缝滚动插件 how to use : $("#marquee-main").kxbdmarquee({ isequal:true,//所有滚动的元素长宽是否相等,true,false loop: 0,//循环滚动次数,0时无限 direction: 'left',//滚动方向,'left','right','up','down' scrollamount:1,//步长 scrolldelay:25,//时长 newamount:3,//加速滚动的步长 eventa:'mousedown',//鼠标事件,加速 eventb:'mouseup'//鼠标事件,原速 }); ---------------------------------------------------------------------------------------- */ $.fn.kxbdmarquee = function(options){ var opts = $.extend({},$.fn.kxbdmarquee.defaults, options); return this.each(function(){ var $marquee = $(this);//滚动元素容器 var _scrollobj = $marquee.get(0);//滚动元素容器dom var scrollw = $marquee.width();//滚动元素容器的宽度 var scrollh = $marquee.height();//滚动元素容器的高度 var $element = $marquee.children(); //滚动元素 var $kids = $element.children();//滚动子元素 var scrollsize=0;//滚动元素尺寸 var _type = (opts.direction == 'left' || opts.direction == 'right') ? 1:0;//滚动类型,1左右,0上下 //防止滚动子元素比滚动元素宽而取不到实际滚动子元素宽度 $element.css(_type?'width':'height',10000); //获取滚动元素的尺寸 if (opts.isequal) { scrollsize = $kids[_type?'outerwidth':'outerheight']() * $kids.length; }else{ $kids.each(function(){ scrollsize += $(this)[_type?'outerwidth':'outerheight'](); }); } //滚动元素总尺寸小于容器尺寸,不滚动 if (scrollsize<(_type?scrollw:scrollh)) return; //克隆滚动子元素将其插入到滚动元素后,并设定滚动元素宽度 $element.append($kids.clone()).css(_type?'width':'height',scrollsize*2); var nummoved = 0; function scrollfunc(){ var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollleft':'scrolltop'; if (opts.loop > 0) { nummoved+=opts.scrollamount; if(nummoved>scrollsize*opts.loop){ _scrollobj[_dir] = 0; return clearinterval(moveid); } } if(opts.direction == 'left' || opts.direction == 'up'){ var newpos = _scrollobj[_dir] + opts.scrollamount; if(newpos>=scrollsize){ newpos -= scrollsize; } _scrollobj[_dir] = newpos; }else{ var newpos = _scrollobj[_dir] - opts.scrollamount; if(newpos<=0){ newpos += scrollsize; } _scrollobj[_dir] = newpos; } }; //滚动开始 var moveid = setinterval(scrollfunc, opts.scrolldelay); //鼠标划过停止滚动 $marquee.hover( function(){ clearinterval(moveid); }, function(){ clearinterval(moveid); moveid = setinterval(scrollfunc, opts.scrolldelay); } ); //控制加速运动 if(opts.controlbtn){ $.each(opts.controlbtn, function(i,val){ $(val).bind(opts.eventa,function(){ opts.direction = i; opts.oldamount = opts.scrollamount; opts.scrollamount = opts.newamount; }).bind(opts.eventb,function(){ opts.scrollamount = opts.oldamount; }); }); } }); }; $.fn.kxbdmarquee.defaults = { isequal:true,//所有滚动的元素长宽是否相等,true,false loop: 0,//循环滚动次数,0时无限 direction: 'left',//滚动方向,'left','right','up','down' scrollamount:1,//步长 scrolldelay:25,//时长 newamount:3,//加速滚动的步长 eventa:'mousedown',//鼠标事件,加速 eventb:'mouseup'//鼠标事件,原速 }; $.fn.kxbdmarquee.setdefaults = function(settings) { $.extend( $.fn.kxbdmarquee.defaults, settings ); }; /* -------------------------------------------------------------------------------------------------- 下拉菜单 how to use : $.dropdpwn_menu(".nav > ul > li > ul"); 选项卡 how to use : $.easy_tab(".tabhead",".tabcont","click","li"); html结构:
-------------------------------------------------------------------------------------------------- */ $.extend({ 'dropdpwn_menu' : function(nname){ $(nname).css('display','none'); $(nname).parent('li').hover(function() { $(this).children(nname).stop(true, true).slidedown(200); }, function() { $(this).children(nname).stop(true, true).slideup(200); }); return this; }, 'easy_tab' : function(thead,tconn,ttype,childelename){ $(thead).find(childelename).bind(ttype, function() { var index = $(this).index(); $(this).addclass("active").siblings().removeclass("active"); $(tconn).find(childelename).eq(index).show().siblings().hide(); }); return this; } }) })(jquery); /* ------------------------------------------------------------------------------------- placeholder 兼容处理 默认调用 创建的类是 : in_placeholder ------------------------------------------------------------------------------------- */ var jplaceholder = { //检测 _check : function(){ return 'placeholder' in document.createelement('input'); }, //初始化 init : function(){ if(!this._check()){ this.fix(); } }, //修复 fix : function(){ jquery(':input[placeholder]').each(function(index, element) { var self = $(this), txt = self.attr('placeholder'); self.wrap($('
').css({position:'relative', zoom:'1', border:'none', background:'none', padding:'none', margin:'none'})); var pos = self.position(), h = self.outerheight(true), paddingleft = self.css('padding-left'); var holder = $('').text(txt).css({ position:'absolute', left:pos.left, top:pos.top, height:h, lienheight:h, paddingleft:'10px', color:'#aaa' }).appendto(self.parent()); self.focusin(function(e) { holder.hide(); }).focusout(function(e) { if(!self.val()){ holder.show(); } }); holder.click(function(e) { holder.hide(); self.focus(); }); }); } }; //执行 jquery(function(){ jplaceholder.init(); });