js扩展滚动窗口小插件实现文字左右上下滚动效果实例
2016-11-14 16:23
1326 查看
方法一:使用小插件实现,兼容很好
插件代码如下:
方法二:css3加js实现,转载自靖鸣君博客
js代码:
html对应代码
插件代码如下:
(function($) { $.fn.jMarquee = function(o) { o = $.extend({ speed:50, step:1,//速度 direction:"up",//方向 visible:1//数量 }, o || {}); //配置参数 var i=0; var div=$(this); var ul=$("ul",div); var tli=$("li",ul); var liSize=tli.size(); if(o.direction=="left") tli.css("float","left"); var liWidth=tli.innerWidth(); var liHeight=tli.height(); var ulHeight=liHeight*liSize; var ulWidth=liWidth*liSize; //写入 if(liSize>o.visible){ ul.append(tli.slice(0,o.visible).clone()) //重写html li=$("li",ul); liSize=li.size(); //写css样式 div.css({"position":"relative",overflow:"hidden"}); ul.css({"position":"relative",margin:"0",padding:"0","list-style":"none"}); li.css({margin:"0",padding:"0","position":"relative"}); switch(o.direction){ case "left": div.css("width",(liWidth*o.visible)+"px"); ul.css("width",(liWidth*liSize)+"px"); li.css("float","left"); break; case "up": div.css({"height":(liHeight*o.visible)+"px"}); ul.css("height",(liHeight*liSize)+"px"); break; } var MyMar=setInterval(ylMarquee,o.speed); ul.hover( function(){clearInterval(MyMar);}, function(){MyMar=setInterval(ylMarquee,o.speed);} ); }; function ylMarquee(){ if(o.direction=="left"){ if(div.scrollLeft()>=ulWidth){ div.scrollLeft(0); } else { var leftNum=div.scrollLeft(); leftNum+=parseInt(o.step); div.scrollLeft(leftNum) } } if(o.direction=="up"){ if(div.scrollTop()>=ulHeight){ div.scrollTop(0); } else{ var topNum=div.scrollTop(); topNum+=parseInt(o.step); div.scrollTop(topNum); } } }; }; })(jQuery); //调用 $(document).ready(function(){ //.stroll1是div里面带一个ul就行了,里面的数据使用php调取 $(".stroll1").jMarquee({visible:4,step:1,direction:"up"}); $(".stroll2").jMarquee({visible:4,step:1,direction:"up"}); $(".stroll3").jMarquee({visible:4,step:1,direction:"up"}); })
方法二:css3加js实现,转载自靖鸣君博客
js代码:
/** * @author 靖鸣君 * @email jingmingjun92@163.com * @description 滚动 * @class Marquee * @param {Object} */ var Marquee = function(){ this.direction = "top"; this.speed = 30; }; Marquee.prototype = { //initial init: function(obj, setttings){ this.obj = obj; this._createBox(); this.scroll(); if(settings){ settings.direction && (this.direction = settings.direction); settings.speed && (this.speed = settings.speed); } }, _createBox: function(){ //create inner box A this.iBox = document.createElement("div"); var iBox = this.iBox; with(iBox.style){ width = "100%"; height = "100%"; overflow = "hidden"; } iBox.setAttribute("id", "marqueeBoxA"); iBox.innerHTML = obj.innerHTML; //clone inner box B var iBox2 = iBox.cloneNode(true); iBox2.setAttribute("id", "marqueeBoxB"); //append to obj Box this.obj.innerHTML = ""; this.obj.appendChild(iBox); this.obj.appendChild(iBox2); }, //animation scroll: function() { var _self = this; this.timer = setInterval(function(){ _self._ani(); }, this.speed); }, //setInterval function _ani: function() { if(obj.clientHeight - obj.scrollTop <= 0){ obj.scrollTop = obj.offsetHeight - obj.scrollTop + 1; } else { obj.scrollTop++; console.log(obj.offsetHeight, obj.scrollTop); } }, stop: function(){ clearInterval(this.timer); }, start: function(){ this.scroll(); } };
html对应代码
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>Demo</title> <style type="text/css"> #box { width: 150px; height: 200px; border:1px solid #EFEFEF; background: #F8F8F8; padding:0 20px; line-height:22px; overflow:hidden; } </style> </head> <body> <div id="box"> 我是靖鸣君1<br /> 我是靖鸣君2<br /> 我是靖鸣君3<br /> 我是靖鸣君4<br /> 我是靖鸣君5<br /> 我是靖鸣君1<br /> 我是靖鸣君2<br /> 我是靖鸣君3<br /> 我是靖鸣君4<br /> 我是靖鸣君5<br /> </div> </body> </html>
相关文章推荐
- JS实现倒计时和文字滚动的效果实例
- JS实现图片滚动(无缝、平滑、上下左右滚动)效果
- JS实现倒计时和文字滚动的效果实例
- js实现文字定时上下滚动效果
- javascript实现文字图片上下滚动的具体实例
- 实现Js文字滚动效果(代码)
- JS实现“鼠标控制局部文字滚动效果”研究
- fxMarquee - jQuery内容滚动插件实现上下左右滚动
- jQuery实现自动左右滚动效果的代码实例
- Js实现图片缩放上下左右移动效果
- 一个js实现任务栏文字滚动效果
- js文字上下滚动+左右滚动兼容FF/IE
- JS图片滚动(无缝、平滑、上下左右滚动)效果
- JS实现文本内容上下滚动效果
- 图片或文字上下左右滚动【JS向上滚动、JS向下滚动、JS向左滚动、JS向右滚动】【整理综合】
- 文字不间断滚动(上下左右)实例代码
- JS实现上下左右四方向无间隙滚动
- JS图片滚动(无缝、平滑、上下左右滚动)效果
- js 上下文字滚动效果
- JS 实现文字左右滚动,必不可少的样式