jq插件第二款来袭 图片滚动

这第二款也是非常实用的插件,也是与图片相关,关于图片的需求太多了,这个是图片滚动哦,不过不是无缝滚动,是左像右滚动,到头的话再往回滚动,利用scrollLeft实现的,支持自动滚动和每次滚动的个数默认为1张,另外提供了连个外接方法, 停止自动滚动$.fn.roll.stop,继续自动滚动$.fn.roll.auto,不多说,上菜!

JQ插件代码

(function($){
    $.fn.roll = function(options){
        if($(this).length == 0) return false;
        var opts = $.extend({},$.fn.roll.defaults,options);

        function Rolling(o){
            this.oParent = o;
            this.imgList = o.find(opts[‘imgList‘]);
            this.rollEle = o.find(opts[‘rollEle‘]);
            this.rollEleParent = o.find(opts[‘rollEleParent‘]);
            this.bl = o.find(opts[‘btn-left‘]);
            this.br = o.find(opts[‘btn-right‘]);
            this.auto = opts[‘automatic‘];
            this.speed = opts[‘speed‘];
            this.num = opts[‘num‘];
            this.stop = opts[‘stop‘];
            this.onOff = true;
            this.leftValue = 0;
            this.len = 0;
            this.index = 0;
            this.timer = null;
            this.singleW = 0;
            this.preIndex = -1;
            this.nowIndex = 0;

        }

        Rolling.prototype = {
            init:function(){
                var _this = this;
                this.len = this.rollEle.length;
                this.singleWidth();
                this.rollEleParent.width(this.singleW*this.len);
                this.bl.on(‘click‘,function(){
                    _this.stopRoll();
                    _this.fnRoll(0);
                    return false;
                });
                this.br.on(‘click‘,function(){
                    _this.stopRoll();
                    _this.fnRoll(1);
                    return false;
                });
                if(this.auto){
                    this.timer = setInterval(function(){
                        _this.automatic();
                    },this.speed[0]);

                    this.oParent.hover(function(){
                        _this.stopRoll();
                    },function(){
                        _this.timer = setInterval(function(){
                            _this.automatic();
                        },_this.speed[0])
                    })
                }
            },
            singleWidth:function(){
                this.singleW =  this.rollEle.eq(0).outerWidth(true);
            },          

            fnRoll:function(dir){                //dir == 1,→→滚, dir==0,←←滚
                var _this = this;
                this.onOff = false;
                this.preIndex = this.index;
                var scrolling = dir ? {scrollLeft:_this.singleW*this.num + _this.singleW*_this.index}:{scrollLeft:_this.leftValue - _this.singleW*this.num}

                this.imgList.animate(scrolling,_this.speed[1],function(){
                    _this.onOff = true;
                    if(dir){
                       if(_this.index < _this.len){
                        _this.index += _this.num;
                        _this.nowIndex = _this.index;
                        }else{
                            _this.index = _this.len;

                        }  

                    }else{
                        if(_this.index > 0){
                            _this.index -= _this.num;
                            _this.nowIndex = _this.index
                        }else{
                            _this.index = 0;

                        }
                        _this.nowIndex = _this.index;
                    }

                    _this.leftValue = $(this).scrollLeft();
                    if(this.nowIndex == 0){      //当前索引为0是,则应该向右滚动,重置preIndex值(当前为0)
                        this.preIndex = -1;
                    }

                })

            },

            stopRoll:function(){
                clearInterval(this.timer)
            },
            automatic:function(){
                if(this.leftValue >=  this.rollEleParent.width() - this.imgList.width() + parseFloat(this.rollEleParent.css(‘margin-left‘))){
                    //判断 滚动容器是否滚到头,若到头了,则往回滚
                    this.fnRoll(0)
                }

                if(this.preIndex < this.nowIndex){    //判断上一次与当前索引的关系,若大于,则是向有滚动,若小于或等于则向左滚动
                    this.fnRoll(1)
                    return;
                }

                if(this.preIndex >= this.nowIndex ){

                    this.fnRoll(0)
                }

                if(this.nowIndex == 0){      //当前索引为0是,则应该向右滚动,重置preIndex值(当前为0)
                    this.preIndex = -1;
                }

            }

        }

        return this.each(function(){
            var $this = $(this);
            var obj = new Rolling($this);
            obj.init();
            $.fn.roll.stop = function(){
                obj.stopRoll();
            }   //曝露停止自动滚动方法,共外部条用
            $.fn.roll.auto = function(){
                obj.stopRoll();
                obj.timer = setInterval(function(){
                    obj.automatic();
                },obj.speed[0]);
            }   //曝露继续自动滚动方法,共外部条用

        })
    };

    $.fn.roll.defaults = {
        ‘imgList‘ : ‘.sildeImgList‘,        //滚动容器
        ‘rollEle‘ : ‘li‘,                   //滚动元素
        ‘rollEleParent‘ : ‘ul‘,             //滚动元素父级
        ‘btn-left‘: ‘.btn-left‘,            //button←←
        ‘btn-right‘: ‘.btn-right‘,          //button→→
        ‘automatic‘: false,                 //是否自动滚动
        ‘speed‘    : [3000,300],            //间隔,速度
        ‘num‘      : 1,                     //一次滚动的数量
    };

})(jQuery);

html

<div class="sildeImgBox">
      <span class="btn-left"></span>
      <div class="sildeImgList">
             <ul>
                 <li><img src="images/mm1.jpg" alt=""></li>
                 <li><img src="images/mm2.jpg" alt=""></li>
                 <li><img src="images/mm3.jpg" alt=""></li>
                 <li><img src="images/mm1.jpg" alt=""></li>
                 <li><img src="images/mm2.jpg" alt=""></li>
                 <li><img src="images/mm3.jpg" alt=""></li>
                 <li><img src="images/mm1.jpg" alt=""></li>
                 <li><img src="images/mm2.jpg" alt=""></li>
             </ul>
      </div>
      <span class="btn-right"></span>
</div>

调用

<script>

$(function(){
    $(‘.sildeImgBox‘).eq(0).roll({‘automatic‘ : true})
})

</script>

css

.sildeImgBox { width: 940px; margin: 0 auto; height: 344px; }
.sildeImgBox .btn-left { background-position: 0 0; left: 0; }
.sildeImgBox .btn-right { background-position: 100% 0; right: 0; }
.sildeImgBox .sildeImgList { width: 820px; height: 349px; overflow: hidden; }
.sildeImgBox .sildeImgList ul { left: 0; right: 0; margin-left: -15px; width: 5000px; }
.sildeImgBox .sildeImgList li { display: inline; float: left; width: 262px; height: 344px; margin-left: 15px; box-shadow: 2px 2px 5px rgba(4, 0, 0, 0.75); }
.sildeImgBox .btn-left, .sildeImgBox .btn-right .sildeImgBox .sildeImgList ul { position: absolute; }
.sildeImgBox .btn-left, .sildeImgBox .btn-right { display: block; }
.sildeImgBox, .sildeImgBox .sildeImgList { position: relative; }

jq插件第二款来袭 图片滚动

时间: 2024-11-09 19:39:05

jq插件第二款来袭 图片滚动的相关文章

10款很好用的 jQuery 图片滚动插件

jQuery 作为最流行的 JavaScript 框架,使用简单灵活,同时还有许多优秀的插件可供使用.其中最令人印象深刻的应用之一就是各种很酷的图片效果,它可以让的网站更具吸引力.这里收集了10款很好用的 jQuery 图片滚动插件分享给大家. 1.Nivo Slider 首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次! 在线演示 源码下载 2.Slides Slides 是一款精巧的

jquery mobile的一些插件(图片滚动)

jquery mobile的一些插件(图片滚动) 1,photoswipe 网址:http://www.photoswipe.com/demo: http://www.photoswipe.com/latest/examples/04-jquery-mobile.html个人描述:在手机上操作很流畅,能自使用屏幕尺寸,竖屏显示效果很好,横屏图片太大了,也就是列数固定的原因. 2,Touch-Gallery 网址:http://neteye.github.com/touch-gallery.htm

分享一款页面视差滚动切换jquery.localscroll插件

今天给大家分享一款页面视差滚动切换jquery.localscroll插件. 滚动鼠标液动条看下页面的切换效果.该插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="pageWidth" id="box_root"> <!-- 头部导航开始 --> <div id="nav&qu

个人学习JQ插件编写成果:little酷炫的图片滑动切换效果

工作一个多月了,好久没来冒冒泡了,看了@wayong的JQ插件教程,自己编写了一个模仿拉勾网首页广告栏滑动特效的JQ插件,现在跟朋友们分享分享! 先上demo链接:http://runjs.cn/detail/gpowdhhk 快要下班了~先把代码放出来~~回家再编辑~ 这里是HTML代码: 1 <!--js酷炫图片滑动hover效果,类似拉勾网--> 2 <div class="beauty-go-outer" id="my-div"> 3

JQ插件之imgAreaSelect实现对图片的在线截图功能(java版)

前言:在做网站的时候经常用的功能就是,用户上传图片对自己上传的图片进行截图,DIV自己的头像.或者上传幻灯片大图进行DIV设置小图. 解决方案:目前我知道的解决方案有两个如下:       一.flash用户上传头像组件 ,地址:  http://www.hdfu.net/index.html (但收费)      二.jq插件imgAreaSelect, 地址:http://odyniec.net/projects/imgareaselect/ 注:官网文档为英文的,如果想看中文的这里也有,h

推荐几款jquery图片切换插件

一.前言 毕业季到了,大家都在匆匆忙忙的记录大学里最美好的时光,照片中各种花式.各种姿势都涌现出来了.这么多的照片怎么展示出来给自己的好友看呢?有人选择做成视频,有人选择ps之后做成图片集,而我选择利用静态网页的形式进行展示. 二.用到的四个免费的jquery插件 注:都是网上免费的,自己测试过了,挺好用的,顺便改了改. 1.3D Change 下载地址:https://github.com/hjzgg/picture_show/tree/master/3D_change 效果展示 2.Samp

10款jquery图片广告特效的预览及源码下载

<p><b>1.jQuery仿海尔官网全屏焦点图特效代码</b></p><p>Query仿海尔官网全屏焦点图特效代码,带有左右箭头的jQuery焦点图切换特效.当焦点图切换时,下方的三块小图也相对应的进行切换.</p><img src="http://www.jqshare.com/Uploads/images/max_51efef9541f48.jpg" /><a href="http

10款jquery图片广告特效的预览及源码下载 改自[帅的相对论]

原文格式有问题,我来排版了一下,分享给大家. 1.jQuery仿海尔官网全屏焦点图特效代码 Query仿海尔官网全屏焦点图特效代码,带有左右箭头的jQuery焦点图切换特效.当焦点图切换时,下方的三块小图也相对应的进行切换. 在线演示 源码下载 2.非常炫酷的jQuery动态随机背景滚动特效 非常炫酷的jQuery动态随机背景滚动特效,图片背景会不停息的滚动,带有那种漂浮的视觉效果,小圈圈飘动. 在线演示 源码下载 3.jQuery立体感动态下拉导航菜单特效 jQuery立体感动态下拉导航菜单特

Android高级图片滚动控件,编写3D版的图片轮播器

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482089 大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博客了,我也是深感惭愧.那么今天的这篇既然是阔别了一个多月的文章,当然要带来更加给力点的内容了,那么话不多说,赶快进入到今天的正题吧. 说 到图片轮播器,很多的Android应用中都会带有这个功能,比如说网易新闻.淘宝等.最新我们公司的一款应用也加入了这个功能,并且在图片轮播的基础上 还增加了三维立体