直接上代码吧

<!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插件的更多相关文章

  1. 一个无缝滚动的jquery插件

    $.fn.imgscroll = function(o){ var defaults = { speed: 40, amount: 0, width: 1, dir: "left" ...

  2. 一个简单的消息提示jquery插件

    最近在工作中写了一个jquery插件,效果如下: 就是一个简单的提示消息的一个东西,支持最大化.最小化.关闭.自定义速度.自定义点击事件,数据有ajax请求和本地数据两种形式.还有不完善的地方,只做了 ...

  3. [转]一个文件上传的jquery插件

    http://www.jb51.net/article/51547.htm 这篇文章主要介绍了使用ajaxfileupload.js实现ajax上传文件php版,需要的朋友可以参考下     无论是P ...

  4. JavaScript 一个进行枚举选择的jquery插件(仿easyui风格)

    某次做项目要实现一个功能: 按星期选择一个连续的时间范围 比如:周一到周五,周六到周日 或 周六到周三 聪明的朋友马上想出办法:用两个选项为周一到周日的下拉列表实现,对 那样可以,但是我觉得不够友好, ...

  5. 简易页面场景滚动的jquery插件

    (function($){ $.extend($.fn, { scene_scroll:function(arg_obj){ // 参数检测 // 场景数组 var $scene_arr = arg_ ...

  6. js文字无缝滚动

    <div id=demo style="overflow:hidden; width:128px; height:300px;"> <div id=demo1&g ...

  7. 20 个用于处理页面滚动效果的 jQuery 插件

    对设计和开发一个网站来说,web开发者不能低估了网站滚动效果的重要性.如今,设计者们都视为一大挑战了,在网站中设计出吸引眼球的高效视觉滚动效果.幸运的是有各种各样的jquery 滚动插件可供他们使用, ...

  8. 50个jQuery插件可将你的网站带到另一个高度

    Web领域一直在发生变化并且其边界在过去的每一天都在发生变化(甚至不能以小时为计),随着其边界的扩展取得了许多新发展.在这些进步之中,开发者的不断工作创造了更大和更好的脚本,这些脚本以插件方式带来更好 ...

  9. 10款无限滚动自动翻页jquery插件

    2012年3月29日 无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的 结果,改变了一直以来只能通过点击下一页来翻页 ...

随机推荐

  1. 前端知识点-JS相关知识点

    1.谈谈你对Ajax的理解?(概念.特点.作用) AJAX全称为"Asynchronous JavaScript And XML"(异步JavaScript和XML) 是指一种创建 ...

  2. Sonatype Nexus 服务启动失败问题解决

    Sonatype Nexus 服务启动失败问题解决 问题前述: 近日在开发机本机安装了 Oracle 数据库快捷版 11g2 之后,重启电脑后发现本机的maven代理服务无法访问. 现象 通过 Win ...

  3. lda 主题模型--TOPIC MODEL--Gibbslda++结果分析

    在之前的博客中已经详细介绍了如何用Gibbs做LDA抽样.(http://www.cnblogs.com/nlp-yekai/p/3711384.html) 这里,我们讨论一下实验结果: 结果文件包括 ...

  4. Time Complexity Big-O

    It can be inserted anywhere. Note that if you insert it in the beginning the TC will be O(#s +c), bu ...

  5. 输入身份证号码自动读取生日与性别(delphi)

    一.格式介绍: [15位号码格式] 1.第l一6位数为行政区划代码; 2.第7-12位数为出生日期代码; 3.第13---15位数为分配顺序代码; (1).行政区划代码,是指公民第一次申领居民身份证时 ...

  6. String to Double出现误差

    场景描述 做实际项目的时候,由于使用Double类的valueOf得到一个用String类型保存的金额参数(单位为元),当需要转换成以分为单位即整形表示(Integer类表示)时,需要用之前得到的do ...

  7. EBS FORM FOLDER 开发,单元格无法使用右键

    问题描述: 在使用folder开发FORM后,单元格无法使用右键,正常应该可以右键进行隐藏.显示.复制等操作. 通过对比发现是因ITEM属性中 弹出式菜单未设置导致. 解决方法: 设置弹出式菜单

  8. JavaScript中时间戳和时间的相互转换

    时间转换成时间戳: var time = new Date(); var timestamp=Date.parse(time)   //毫秒数,得到秒除以1000: 时间戳转成时间: 1.转换成 20 ...

  9. angular.js升序降序过滤器

    向指令添加过滤器 过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中. orderBy 过滤器根据表达式排列数组: 例如: <div ng-app="myApp" ng ...

  10. Node.js API

    Node.js v4.4.7 Documentation(官方文档) Buffer Prior to the introduction of TypedArray in ECMAScript 2015 ...