写了个jQuery无缝滚动小插件

一个项目中需要用到图片无缝滚动,拿出几年前用过的一用结果不能用了,网上一顿搜索结果没找到太好用的,要不就是要写很多html和js,要不就是对滚动的内容有严格的要求,只好参考着改善了一下,没有做太详细的测试,不过在自己的项目里使用没有什么问题,记下来以备后用,有什么新的需要再扩展吧。

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="Js/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(
function()
{
    $(
"#imageMarquee").marquee();
});
    
(
function($) {
    $.fn.marquee 
= function(o) {
        o 
= $.extend({
            speed:        parseInt($(
this).attr('speed')) || 30// 滚动速度
            step:        parseInt($(this).attr('step')) || 1// 滚动步长
            direction:    $(this).attr('direction'|| 'left' // 滚动方向
        }, o || {});
        
var dIndex = jQuery.inArray(o.direction, ['right''down']);
        
if (dIndex > -1) {
            o.direction 
= ['left''up'][dIndex];
            o.step 
= -o.step;
        }
        
var mid;
        
var e = $(this);
        e.wrap(
"<div class='wrap'><ul><li></li></ul></div>");
        
var p = e.parent().parent().parent();
        //alert(e.width());
        p.find(
'ul>li:first').after(p.find('ul>li:first').clone());
        p.find(
'ul:first').css("listStyle","none");
        
if(o.direction == 'left')
        {
            p.find(
'ul>li').css("float","left");
            p.find(
'ul:first').width(e.width() * 2);
        }
        
else
        {
            p.find(
'ul:first').height(e.height() * 2);
        }
        mid 
= setInterval(_marquee, o.speed);
        p.hover(
            
function(){clearInterval(mid);},
            
function(){mid = setInterval(_marquee, o.speed);}
        );
        
function _marquee() {
            
if (o.direction == 'left') {
                
if(p.scrollLeft() >= e.width()){
                    p.scrollLeft(
0);
                }
                
else{
                    p.scrollLeft(p.scrollLeft() 
+ o.step);
                }
            }
            
else{
                
if(p.scrollTop() >= e.height()){
                    p.scrollTop(
0);
                }
                
else{
                    p.scrollTop(p.scrollTop() 
+ o.step);
                }
            }
        }
    };
})(jQuery);
</script>
<style type="text/css">
.wrap
{ width:800px; height:180px; overflow:hidden;}
#imageMarquee td 
{ padding:5px; }
#imageMarquee img 
{border:solid 1px #999999;}
</style>
</head>

<body>
<table width="500" border="0" cellspacing="0" cellpadding="0" id="imageMarquee">
  
<tr>
    
<td><img src="Images/1.jpg" width="145" height="160" /></td>
    
<td><img src="Images/2.jpg" width="145" height="160" /></td>
    
<td><img src="Images/3.jpg" width="145" height="160" /></td>
    
<td><img src="Images/4.jpg" width="145" height="160" /></td>
    
<td><img src="Images/5.jpg" width="145" height="160" /></td>
  
</tr>
</table>
</body>
</html>

 

posted @ 2011-08-30 17:14  虾吵吵  阅读(431)  评论(0编辑  收藏  举报