片滚动插件myScroll

 

在做产品展示时经常用到,此插件支持两种形式,一种手段左右滚动,一种自动播放。可控制图片显示个数,滚动间隔时间,及动画时间等。

插件参数:

auto:[false,3000]   这里是个数组,第一个是否自动滚动,第二个是自动滚动间隔时间
visible:4    可显示图片的数量
speed:1000   动画时间,可选slow,fast,数值类
scroll:1     每次切换的个数,此数小于等于visible值

使用方法:

首先保证html结构如下:

1<div class="myScroll" id="product0">
2<p class="myPrevBtn"></p>
3<p class="myNextBtn"></p>
4<div class="myBlock">
5<ul>
6  <li>
7  <dl>
8    <dt><a href=""><img src="img.jpg" alt="" /></a></dt>
9    <dd><a href="">图片滚动插件</a></dd>
10  </dl>
11  </li>
12  <li>
13  <dl>
14    <dt><a href=""><img src="img.jpg" alt="" /></a></dt>
15    <dd><a href="">图片滚动插件</a></dd>
16  </dl>
17  </li>
18  <li>
19  <dl>
20    <dt><a href=""><img src="img.jpg" alt="" /></a></dt>
21    <dd><a href="">图片滚动插件</a></dd>
22  </dl>
23  </li>
24</ul>
25</div>
26</div>

html结构中li里面的形式自己可以根据实际情况修改

css样式:

1*{ margin:0; padding:0}
2  
3/*-插件样式*/
4.myScroll {
5    width:100%;
6    height:210px;
7    overflow:hidden;
8    zoom:1;
9}
10.myScroll p {
11    width:22px;
12    height:210px;
13    background-image:url(icon.gif);
14    background-repeat:no-repeat;
15    cursor:pointer
16}
17.myPrevBtn {
18    background-position:left center;
19    float:left;
20    display:inline
21}
22.myNextBtn {
23    background-position:right center;
24    float:right;
25    display:inline
26}
27.myBlock {
28    overflow:hidden;
29    float:left;
30    display:inline
31}
32.myBlock ul {
33    width:100%;
34    overflow:hidden;
35    zoom:1;
36    list-style:none
37}
38.myBlock ul li {
39    width:200px;
40    float:left;
41    padding:10px 0;
42    display:inline
43}
44.myBlock ul li:hover {
45    background-color:#FFC
46}
47.myBlock dl {
48    width:160px;
49    margin:0 auto;
50    list-style:none;
51}
52.myBlock dl dt {
53    width:160px;
54    height:160px;
55    overflow:hidden;
56    background-color:#FFF
57}
58.myBlock dl dt img {
59    width:160px;
60}
61.myBlock dl dd {
62    line-height:18px;
63    list-style:none;
64    text-align:center
65}
66.myBlock dl dd a {
67    display:inline-block;
68    padding:3px 0;
69    width:100%;
70}
71.myClone {
72    overflow:hidden;
73    zoom:1
74}
75.myClone ul {
76    float:left;
77    display:inline
78}

调用插件:

1//手动滚动
2$("#product0").myScroll({
3            visible:3,
4        scroll:2,
5        speed:1000
6        });
7  
8//自动滚动
9$("#product").myScroll({
10               visible:4,
11               scroll:3,
12               auto:[true,2000],
13               speed:1000
14});

浏览DEMO>>

源代码:

1(function($)
2{
3  $.fn.myScroll = function(options)
4  {
5  
6    //默认配置
7    var defaults = {
8      auto: [false, 3000],
9      //是否自动滚动,第二个参数是自动滚动是切换的间隔时间
10      visible: 4,
11      //可显示的数量
12      speed: 1000,
13      //动画时间,可选slow,fast,数值类
14      scroll: 1 //每次切换的个数,此数小于等于visible值
15    };
16  
17    var opts = $.extend(
18    {}, defaults, options);
19    opts.scroll = opts.scroll > opts.visible ? opts.visible : opts.scroll;
20  
21    this.each(function(i)
22    {
23  
24      var prevBtn = $(this).find("p.myPrevBtn"),
25          nextBtn = $(this).find("p.myNextBtn"),
26          block = $(this).find("div.myBlock"),
27          innerBlock = block.find("ul"),
28          list = block.find('ul>li'),
29          listNum = list.size(),
30          listWidth = list.width(),
31          blockWidth = listWidth * opts.visible,
32          ntervalId;
33  
34      //设置宽度样式
35    $(this).width(blockWidth + prevBtn.width() + nextBtn.width());
36      block.width(blockWidth).find("ul").width(listWidth * listNum);
37  
38      //获取已滚动个数
39  
40      function getSnum()
41      {
42        return (parseInt(innerBlock.css("margin-left")) * -1) / listWidth;
43      }
44  
45      //获取滚动的距离
46  
47      function getMove(c)
48      {
49        return c >= opts.scroll ? opts.scroll * listWidth : c * listWidth;
50      }
51  
52      //单击向前按钮
53      prevBtn.click(function()
54      {
55        var snum = getSnum(),
56            c = listNum - snum - opts.visible,
57            m = getMove(c);
58  
59        if (listNum - snum > opts.visible)
60        {
61          innerBlock.animate(
62          {
63            "margin-left": "-=" + m
64          }, opts.speed);
65        }
66      });
67  
68      //单击向后按钮
69      nextBtn.click(function()
70      {
71        var snum = getSnum(),
72            m = getMove(snum);
73  
74        if (snum > 0)
75        {
76          innerBlock.animate(
77          {
78            "margin-left": "+=" + m
79          }, opts.speed);
80        }
81      });
82  
83      //如果自动滚动
84      if (opts.auto[0])
85      {
86  
87        $(this).width(blockWidth);
88        prevBtn.hide();
89        nextBtn.hide();
90  
91        function auto()
92        {
93          var snum = getSnum(),
94              m = getMove(listNum - snum - opts.visible);
95  
96          if (listNum - snum > opts.visible)
97          {
98            innerBlock.animate(
99            {
100              "margin-left": "-=" + m
101            }, opts.speed);
102          }
103          else
104          {
105            innerBlock.css("margin-left", 0).find('li').slice(0, listNum - opts.visible).appendTo(innerBlock);
106          }
107        }
108  
109        //当鼠标经过滚动区域停止滚动
110    block.hover(function()
111        {
112          clearInterval(intervalId);
113        }, function()
114        {
115          intervalId = setInterval(auto, opts.auto[1] + Math.abs(opts.speed - opts.auto[1]) + 100);
116        }).trigger('mouseleave');
117  
118      }
119  
120    });
121  
122  };
123  
124})(jQuery);

 

转载于:https://www.cnblogs.com/tangself/archive/2012/05/15/2501182.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值