一个文字无缝滚动的jQuery插件
直接上代码吧
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>marquee插件--滚动示例</title>
<link type="text/css" href="http://888.gtimg.com/css/v1.0/qqcaipiao/cp_party_effect.css" rel="stylesheet"/>
<style type="text/css">
#mar1 { height: 120px; width: 200px; margin-top: 20px; margin-left: 20px; background: #333; color: #FFF; }
#mar2 { height: 120px; width: 200px; margin-top: 20px; margin-left: 20px; background: #333; color: #FFF; }
#mar3 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #06F; color: #FFF; }
#mar4 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #06F; color: #FFF; }
#mar5 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #F66; color: #FFF; }
#mar6 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #F66; color: #FFF; }
</style>
</head> <body>
<div id="mar1">
<ul>
<li>测试数据第一条</li>
<li>测试数据第二条</li>
<li>测试数据第三条</li>
<li>测试数据第四条</li>
<li>测试数据第五条</li>
<li>测试数据第六条</li>
</ul>
</div>
<div id="mar2">
<ul>
<li>测试数据第一条</li>
<li>测试数据第二条</li>
<li>测试数据第三条</li>
<li>测试数据第四条</li>
<li>测试数据第五条</li>
<li>测试数据第六条</li>
</ul>
</div>
<div id="mar3">
<ul>
<li>测试数据第一条</li>
<li>测试数据第二条</li>
<li>测试数据第三条</li>
<li>测试数据第四条</li>
<li>测试数据第五条</li>
</ul>
</div>
<div id="mar4">
<ul>
<li>测试数据第一条</li>
<li>测试数据第二条</li>
<li>测试数据第三条</li>
<li>测试数据第四条</li>
<li>测试数据第五条</li>
</ul>
</div>
<div id="mar5">
<ul>
<li>测试数据第一条</li>
<li>测试数据第二条</li>
<li>测试数据第三条</li>
<li>测试数据第四条</li>
<li>测试数据第五条</li>
</ul>
</div>
<div id="mar6">
<ul>
<li>测试数据第一条</li>
<li>测试数据第二条</li>
<li>测试数据第三条</li>
<li>测试数据第四条</li>
<li>测试数据第五条</li>
</ul>
</div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
/**
* @author xf.radish
* jQuery插件 常用效果的实现
*/
(function (jQuery) {
jQuery.fn.extend({
/**
*@description 无缝滚动 支持匀速上下左右和垂直翻滚上下
*@param {
* direction:string,//滚动方向 值域:top|left|bottom|right|up|down
* speed:string//滚动速度(垂直翻滚时为停留时间)
* } o
*@example
*HTML结构
*<div id="mar">
* <ul>
* <li>内容1</li>
* <li>内容2</li>
* <li>内容3</li>
* </ul>
*</div>
*mar样式应该包含height,width,background等 注意不要覆盖了插件附加上去的样式
*调用:
*jQuery("#mar").marquee({
* direction:"top",
* speed:30
*})
*
*/
marquee:function (o) {
var it = this,
d = o.direction || 'left', //滚动方向 默认向左
s = o.speed || 30, //速度 默认30毫秒
mar = jQuery(it),
mp1 = jQuery(it).children(0).attr({id:"mp1"}),
marqueeFunc = getMarquee(d),
marRun = marqueeFunc ? setInterval(marqueeFunc, s) : function () {
return false;
};//开始滚动
//鼠标悬停事件
jQuery(it).hover(function () {
clearInterval(marRun);
}, function () {
marRun = setInterval(marqueeFunc, s);
})
/*生成滚动函数
*1.判断方向 *2.装载CSS *3.判断需不需要滚动 *4.构造函数
*/
function getMarquee(d) {
var marqueeFunc;
switch (d) {
//水平向左
case "left":
mar.addClass("plus-mar-left");
var liHeight = mar[0].offsetHeight;
mar.css({"line-height":liHeight + "px"});
if (mp1[0].offsetWidth < mar[0].offsetWidth) return false;
mp1.clone().attr({id:"mp2"}).appendTo(mar);
marqueeFunc = function () {
if (mar[0].scrollLeft >= mp1[0].scrollWidth) {
mar[0].scrollLeft = 0;
} else {
mar[0].scrollLeft++;
}
}
break;
//水平向上
case "top":
mar.addClass("plus-mar-top");
if (mp1.outerHeight() <= mar.outerHeight()) return false;
var mp2 = mp1.clone().attr({id:"mp2"}).appendTo(mar);
marqueeFunc = function () {
var scrollTop = mar[0].scrollTop;
if (mp1[0].offsetHeight > scrollTop) {
mar[0].scrollTop = scrollTop + 1;
} else {
mar[0].scrollTop = 0;
}
}
break;
//水平向右
case "right":
mar.addClass("plus-mar-left");
var liHeight = mar[0].offsetHeight;
mar.css({"line-height":liHeight + "px"});
if (mp1[0].offsetWidth <= mar[0].offsetWidth) return false;
var mp2 = mp1.clone().attr({id:"mp2"}).appendTo(mar);
marqueeFunc = function () {
if (mar[0].scrollLeft <= 0) {
mar[0].scrollLeft += mp2[0].offsetWidth;
} else {
mar[0].scrollLeft--;
}
}
break;
//水平向下
case "bottom":
mar.addClass("plus-mar-bottom");
if (mp1[0].offsetHeight <= mar[0].offsetHeight) return false;
var mp2 = mp1.clone().attr({id:"mp2"}).appendTo(mar);
mar[0].scrollTop = mar[0].scrollHeight;
marqueeFunc = function () {
if (mp1[0].offsetTop >= mar[0].scrollTop) {
mar[0].scrollTop += mp1[0].offsetHeight;
} else {
mar[0].scrollTop--; }
}
break;
//垂直翻滚 向上
case "up":
mar.addClass("plus-mar-up");
var liHeight = mar[0].offsetHeight;
mp1.css({"line-height":liHeight + "px"});
marqueeFunc = function () {
var currLi = it.eq(0).find("ul:first");
currLi.animate({
marginTop:-liHeight
}, 500, function () {
currLi.find("li:first").appendTo(currLi);
currLi.css({marginTop:0});
})
}
break;
//垂直翻滚 向下
case "down":
mar.addClass("plus-mar-down");
var liHeight = mar[0].offsetHeight,
liLength = mp1.children().length,
topInit = -(liLength - 1) * liHeight + "px";
mp1.css({"top":topInit, "line-height":liHeight + "px"});
marqueeFunc = function () {
var currLi = it.eq(0).find("ul:last");
currLi.animate({
marginTop:liHeight
}, 500, function () {
currLi.find("li:last").prependTo(currLi);
currLi.css({marginTop:0});
})
}
break;
default:
{
marqueeFunc = null;
alert("滚动插件:传入的参数{direction}有误!");
}
}
return marqueeFunc;
}
}
})
})(jQuery); $("#mar1").marquee({
direction:"top",
speed:30
}); $("#mar2").marquee({
direction:"bottom",
speed:30
}); $("#mar3").marquee({
direction:"right",
speed:30
}); $("#mar4").marquee({
direction:"left",
speed:30
}); $("#mar5").marquee({
direction:"down",
speed:2000
})
$("#mar6").marquee({
direction:"up",
speed:3000
});
</script>
</body>
</html>
一个文字无缝滚动的jQuery插件的更多相关文章
- 一个无缝滚动的jquery插件
$.fn.imgscroll = function(o){ var defaults = { speed: 40, amount: 0, width: 1, dir: "left" ...
- 一个简单的消息提示jquery插件
最近在工作中写了一个jquery插件,效果如下: 就是一个简单的提示消息的一个东西,支持最大化.最小化.关闭.自定义速度.自定义点击事件,数据有ajax请求和本地数据两种形式.还有不完善的地方,只做了 ...
- [转]一个文件上传的jquery插件
http://www.jb51.net/article/51547.htm 这篇文章主要介绍了使用ajaxfileupload.js实现ajax上传文件php版,需要的朋友可以参考下 无论是P ...
- JavaScript 一个进行枚举选择的jquery插件(仿easyui风格)
某次做项目要实现一个功能: 按星期选择一个连续的时间范围 比如:周一到周五,周六到周日 或 周六到周三 聪明的朋友马上想出办法:用两个选项为周一到周日的下拉列表实现,对 那样可以,但是我觉得不够友好, ...
- 简易页面场景滚动的jquery插件
(function($){ $.extend($.fn, { scene_scroll:function(arg_obj){ // 参数检测 // 场景数组 var $scene_arr = arg_ ...
- js文字无缝滚动
<div id=demo style="overflow:hidden; width:128px; height:300px;"> <div id=demo1&g ...
- 20 个用于处理页面滚动效果的 jQuery 插件
对设计和开发一个网站来说,web开发者不能低估了网站滚动效果的重要性.如今,设计者们都视为一大挑战了,在网站中设计出吸引眼球的高效视觉滚动效果.幸运的是有各种各样的jquery 滚动插件可供他们使用, ...
- 50个jQuery插件可将你的网站带到另一个高度
Web领域一直在发生变化并且其边界在过去的每一天都在发生变化(甚至不能以小时为计),随着其边界的扩展取得了许多新发展.在这些进步之中,开发者的不断工作创造了更大和更好的脚本,这些脚本以插件方式带来更好 ...
- 10款无限滚动自动翻页jquery插件
2012年3月29日 无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的 结果,改变了一直以来只能通过点击下一页来翻页 ...
随机推荐
- java自带的监控工具VisualVM一
转自:http://www.cnblogs.com/wade-xu/p/4369094.html 这篇总结的很不错(本人亲自操手学习),留着以后复习备用,很适合入门级的学习者: VisualVM 是一 ...
- ios下iphone的plus下
二维码能被长按识别,但因为某种原因识别区域发生了偏移 meta标签定义了默认缩放为一倍就能识别,不定义就不能识别. 网上是这么说的: meta标签定义了默认缩放为一倍就能识别,不定义就不能识别.于是我 ...
- sql数据导出导入格式化
SHELL脚本导入导出数据时,按逗号分隔,引号包含字段,null值'' gccli -uroot -h$ip -e"rmt:${sqlStr} into outfile '${name}${ ...
- http://www.cnblogs.com/ycxyyzw/archive/2012/07/31/2616951.html
http://www.cnblogs.com/ycxyyzw/archive/2012/07/31/2616951.html
- 面试题-Java Web-Servlet部分
1.什么是Servlet? Servlet是用来处理客户端请求并产生动态网页内容的Java类.Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状 ...
- bigdata之hadoop and spark
目前正在学习Hadoop和spark之类的东西,一个月把Hadoop的基础东西过了一遍,但是感觉好动都没跟上老师的课程,哪位前辈了解这方面的东西希望给指点迷津.接下来我们还要学习spark和nosql ...
- 升级到macSierra 10.12之后 在模拟器上面滑动视图很卡,
解决方法 在终端里面输入sudo sysctl -w kern.timer.coalescing_enabled=0
- Java基础第3章
- 关于PC端与手机端随着手指移动图片位置放生变化的拖拽事件
当按下鼠标时,图片随鼠标移动松开时图片回到原位 drag("div_id") function drag(node_id){ var node = document.getElem ...
- SQL LIKE语句多条件贪婪匹配算法
在CMS开发中,经常会有类似这样的需求: 提问——回答模式,最经典的例子就是百度提问. 提问者提出问题,由其他人回答,其他人可以是用户,也可以是服务商. 在这个模式中,如何充分利用历史数据是最关键的技 ...