面向对象的方法来写轮播插件

其实写轮播的插件很多 ,但是终归不是自己写的 ,改起来还是很麻烦的 ,看过各种各样的轮播插件之后 ,自己写了这个 ,可能不完美 ,但是可复用,还算简洁,带有自动轮播以及按钮点击,前后滑动效果,基本的轮播已经够用了倒是。

HTML部分代码-直接引用类传入参数即可

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="css/css.css"/>
    <script src="js/jquery.js"></script>
</head>
<body>
    <div class="main">
        <div class="container">
            <ul class="list">
                <li>
                    <img src="images/a1.jpg" alt=""/>
                </li>
                <li>
                    <img src="images/a2.jpg" alt=""/>
                </li>
                <li>
                    <img src="images/a3.jpg" alt=""/>
                </li>
                <li>
                    <img src="images/a2.jpg" alt=""/>
                </li>
            </ul>
            <ol class="iconList">
            </ol>
            <a class="leftBtn"></a>
            <a class="rightBtn"></a>
        </div>
    </div>
<script>
    $(function(){
        var arg=new Slider({
            mainBox:‘.main‘,
            conBox:‘.container‘,
            listBox:‘.list‘,
            listItem:‘.list li‘,
            iconList:‘.iconList‘,
            iconItem:‘.iconList li‘,
            imgSpeed:‘1000‘,
            boxNum:‘1‘,
            sliderSpeed:‘3000‘,
            autoplay:true,
            leftBtn:‘.leftBtn‘,
            rightBtn:‘.rightBtn‘
        })
    });
</script>
</body>
</html>

js代码部分

function Slider(a){
    this.mainBox= a.mainBox;
    this.conBox= a.conBox;
    this.listBox= a.listBox;
    this.listItem= a.listItem;
    this.iconList= a.iconList;
    this.iconItem= a.iconItem;
    this.leftBtn= a.leftBtn;
    this.rightBtn= a.rightBtn;
    this.autoplay= a.autoplay;
    this.sliderSpeed= a.sliderSpeed;
    this.imgSpeed= a.imgSpeed;
    this.boxNum= a.boxNum;
    this.init();
}
Slider.prototype.init=function(){
    var k=0;
    var w=0;
    var that=this;
    var timer=null;
    var list=$(this.listBox);
    var len=$(this.listItem).length;
    var width=parseInt($(this.listItem).css(‘width‘));
    var num=Math.ceil(len/this.boxNum);

//        添加小按钮页数
    for(var i=0;i<num;i++){
        var j=i+1;
        $(this.iconList).append(‘<li>‘+(i+1)+‘</li>‘)
    }
    $(this.iconItem).eq(0).addClass(‘active‘);
    list.append($(this.listItem).eq(0).clone(true));

//        小按钮页数点击事件
    $(this.iconList).on(‘click‘,‘li‘,function(){
        k=$(this).index();
        w=$(this).index();
        $(that.iconItem).eq(k).addClass(‘active‘).siblings().removeClass(‘active‘);
        list.stop().animate({"left":k*width*-1+"px"},that.imgSpeed);
    })
    //        判断轮播状态
    if(this.autoplay===true){
        timer=setInterval(function(){
            autoPlay();
        },that.sliderSpeed)
    }
//        左按钮点击事件
    $(this.leftBtn).on(‘click‘,function(){
        clearInterval(timer);
        leftSlider();
    });
//        右按钮点击事件
    $(this.rightBtn).on(‘click‘,function(){
        clearInterval(timer);
        rightSlider();
    })
    if(this.autoplay===true){
        (function hover(){
            $(that.conBox+‘ a‘).hover(function(){
                clearInterval(timer);
                timer=null;
            },function(){
                timer=setInterval(function(){
                    autoPlay();
                },that.sliderSpeed)
            })
        })()

    }
//自动轮播
    function autoPlay(){
        k++;
        w++;
        if(k>num-1){
            k=0;
        }
        $(that.iconItem).eq(k).addClass("active").siblings().removeClass("active");
        if(w>num){
            w=1;
            list.css(‘left‘,‘0px‘);
        }
        list.stop().animate({"left":w*width*-1+"px"},that.imgSpeed);
    }

    function leftSlider(){
        k--;
        w--;
        if(k<0){
            k=num-1;
        }
        $(that.iconItem).eq(k).addClass(‘active‘).siblings().removeClass(‘active‘);
        if(w<0){
            list.css({"left":len*width*-1});
            w=num-1;
        }
        list.stop().animate({"left":w*width*-1+"px"},that.imgSpeed);
    }
    function rightSlider(){
        autoPlay();
    }
}

css代码部分

/*css reset*/
body,ul,ol,dl,dd,h1,h2,h3,h4,h5,h6,p,input,select,textarea,form{margin: 0; padding: 0;}
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset,img, legend, input, textarea, p, blockquote, th, td, em, i, b, button, font, span {
    margin: 0;
    padding: 0;
    list-style: none;
    font-style: normal;
    font-weight: normal;
    font-family: "microsoft yahei";
}
*{box-sizing: border-box}
body{font:16px/1.5 "宋体";}
img{border:none;}
ul,ol{list-style:none;}
input,select,textarea{outline:none;border:none;background:none;}
textarea{resize:none;}
a{text-decoration:none;}
/*清浮动*/
.clearfix:after{content:"";
    display: block;clear: both;
    *display:block;
    *clear:both;}
.clearfix{zoom:1;}
/*选择*/
::selection {background-color:#669900; color:#ffffff; text-shadow:none;}
::-moz-selection {background-color:#669900; color:#ffffff;text-shadow:none;}
/*去掉a的下划线*/
a {blr:expression(this.onFocus=this.blur())} /*if IE*/
a {outline:none;
    color: #000;}/*if 火狐等现代浏览器浏览器*/
/*浮动*/
.left{float: left}
.right{float: right}
.parent_position{position: relative}

*{
    box-sizing: border-box;
}
ul,ol,li {
    padding: 0;
    margin: 0;
}
.container{
    width: 500px;
    height: 300px;
    margin: 0 auto;
    border: 1px solid #dddddd;
    overflow: hidden;
    position: relative;
}
.list{
    width: 9999999px;
    height: 300px;
    left: 0;
    position: absolute;
}
.list li{
    float: left;

}
.iconList{
    text-align: center;
    position: absolute;
    bottom: 10px;
    /*border: 1px solid #dddddd;*/
    height: 20px;
    left: 50%;
    margin-left: -45px;
    overflow: hidden;
    width: 160px;
}
.iconList li{
    width:20px;
    height: 20px;
    /*border: 2px solid #ffffff;*/
    border-radius: 50%;
    float: left;
    margin-left:10px;
    color: #000000;
    background: #ffffff;
    cursor: pointer;
    z-index: 10;
    font-size: 10px;
}
.iconList li.active{
    color: #ffffff;
    background: #ff0000;;
}
.list li img{
    width: 500px;
    height: 300px;
}
.leftBtn,.rightBtn{
    position: absolute;
    top: 44%;
    width: 25px;
    height: 30px;
    cursor: pointer;
}
.leftBtn{
    left: 10px;
    background: url(../images/s_btn.png) 0px 0px no-repeat;
}
.rightBtn{
    right: 10px;
    background: url(../images/s_btn.png) 0px -40px no-repeat;
}
时间: 2024-11-10 08:25:28

面向对象的方法来写轮播插件的相关文章

js面向对象实现图片轮播插件

这个demo的学习过程很值得记录下来. 前言:学习了一遍js的面向对象,想找点东西练练手,就上网找了个用js面向对象实现图片轮播插件: http://www.codefans.net/jscss/code/3327.shtml 功能:新建一个实例就是一个图片轮播,可以新建多个,但是实例与实例之间是干扰的. 过程:看视频教程说,第一次搞面向对象,把面向过程改头换面就可以了.自己就死磕地先写了原生,再改为面向对象. 写原生的时候,遇到的问题: 不知道怎么样停止计时器:clearInterval.cl

图片轮播插件的设计抽象

提出需求首页的轮播焦点图是个常见的需求.需求是这样子的1 每隔2秒切换一次图片2 切换图片的时候,会对应显示该图片的说明3 切换图片的时候,对应显示图片处于小按钮中的第几个,点击小按钮时跳到对应的大图4 自动滚动图片,鼠标放到图片区域时,停止滚动,移出时继续5 点击左右可以上下切换图片对于做一个图片轮播并不难,按照要求,写代码就行.而如何设计一个通用的图片轮播组件确实需要好好思考.因为样式是不确定的,同时html结构也是不确定的.所以问改如何设计这个轮播js呢? 使用插件?我是反插件的,除非插件

PgwSlideshow-基于Jquery的图片轮播插件

0 PgwSlideshow简介 PgwSlideshow是一款基于Jquery的图片轮播插件,基本布局分为上下结构,上方为大图轮播区域,用户可自定义图片轮播切换的间隔时间,也可以通过单击左右方向按键实现图片切换:下方为要轮播的所有图片的缩略图展示,可直接单击缩略图快速切换图片. PgwSlideshow主要有以下特点: 体验度很好的响应式设计 支持桌面及移动设备 身形矫健,压缩后的文件只有不到4KB 你可以自定义或者直接修改基本的css样式来给你想要的轮播插件美个容 PgwSlideshow核

jquery实现轮播插件

这几天用jquery写了两个轮播的插件,功能很简单.第一次尝试写插件,有很多不足的地方,代码如下: 注:图片链接请替换掉,配置信息必须加上图片width和height. <!DOCTYPE html> <html ng-app="myApp"> <head lang="en"> <meta charset="UTF-8"> <link rel="stylesheet" hr

Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示

用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色:? 16个独特的过渡效果? 简洁和有效的标记? 加载参数设置?

图片轮播插件

刚买了司徒大大的<Javascript框架设计>,准备开始研读.打算在读之前先随便写个图片轮播插件,到读完这本书再来看看现在的自己有多菜....... 顺便做图片轮播的时候用美女照片真影响效率..... 上代码! 先是如何使用: html: <div id='outer' style='width:591px;height:862px;overflow:hidden;margin-left:100px;'> <ul id='try-slide' style='list-sty

Bootstrap 轮播插件

一.轮播 //基本实例. <div id="myCarousel" class="carousel slide"> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data

如何使用swiper写轮播

之前大家都写过轮播图吧,相信在写轮播图的过程中也因为当中的某些细节烦恼过吧,接下来我给大家讲述一个方便快捷的轮播图吧! Swiper常用于移动端网站的内容触摸滑动 1.第一步先引入css---swiper.css插件和JQ---swiper.js 插件, 然后呢就开始写轮播图了 <div class="swiper-container">--首先定义一个容器 <div class="swiper-wrapper"> <div class

结构-行为-样式-requireJs实现图片轮播插件

最近工作需要,就自己写了一个图片轮播插件,不过想到要集成到框架中,于是又用RequireJs改了一遍. 主要文件: style.css jquery-1.11.1.min.js require.js viewpager.js view.js index.html viewpager.js: define(['jquery'], function ($) { function ViewPager(setting) { var myset = { index: 0 }; setting = $.ex