欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jq写无缝轮播

程序员文章站 2022-03-08 22:31:22
今天分享一下我自己早几天写的一个效果:无缝轮播,虽然不难,很简单,也没有封装处理过,但是还是希望能帮到一些前端的小伙伴吧,如果有小伙伴感觉有更简化的写法希望可以一起交流一下,技术在于交流嘛,我的邮箱是 15857240771@163.com ,下面就直接上代码了: < ......

今天分享一下我自己早几天写的一个效果:无缝轮播,虽然不难,很简单,也没有封装处理过,但是还是希望能帮到一些前端的小伙伴吧,如果有小伙伴感觉有更简化的写法希望可以一起交流一下,技术在于交流嘛,我的邮箱是 15857240771@163.com ,下面就直接上代码了:

 

 

<!doctype html>

<html lang="en">

<head>

    <meta charset="utf-8">

    <title>title</title>

    <style>

        *{

            padding: 0;

            margin: 0;

            list-style: none;

            text-decoration: none;

        }

        .box{

            width: 500px;

            height: 300px;

            border: 1px solid #f00;

            margin: 50px auto;

            position: relative;

            overflow: hidden;

        }

        .box_ul{

            position: absolute;

            height: 100%;

            left:0;

        }

        .box_ul li{

            float: left;

            height: 100%;

            box-sizing: border-box;

            border: 1px solid #0a9dc7;

        }

        .togbtn{

            width: 500px;

            height: 50px;

            line-height: 50px;

            text-align: center;

            border: 1px solid #f00;

            margin: 50px auto;

        }

        .ulreadius{

            position: absolute;

            z-index: 333;

            width: 40%;

            left:30%;

            bottom: 20px;

            height: 20px;

        }

        .ulreadius li{

            width: 15px;

            float: left;

            height: 15px;

            border-radius: 7px;

            background: #0a9dc7;

            margin: 5px 10px;

        }

 

 

    </style>

</head>

<body>

 

    <div class="box">

        <ul class="box_ul">

            <li>第一个轮播图</li>

            <li>第二个轮播图</li>

            <li>第三个轮播图</li>

            <li>第四个轮播图</li>

        </ul>

        <ul class="ulreadius"> </ul>

    </div>

    <div class="togbtn">点击我暂停或者启动轮播</div>

 

 

 

 

<script src="../jquery-1.11.3.js"></script>

 

<script>

    (function () {

        var page={

            //li内容的长度

            len:null,

            //当前运动到到位置   下标

            index:0,

            //最外面到盒子

            box:$('.box'),

            //盒子里面到ul

            ul:$('.box_ul'),

            //获取一下每一次移动的距离

            boxwidth:null,

            //是否执行动画

            isint:true,

            //暂停或者启动按钮

            togbtn:$('.togbtn'),

            //圆点定位

            ulreadius:$('.ulreadius'),

            //执行函数

            init:function () {

                //初始化加载

                this.start();

                //点击按钮操作是否执行轮播

                this.clicktogbtn();

                //点击圆点跳转到对于到图片

                this.clickradius();

                //鼠标移入暂停动画

                this.mousetog();

            },

            clicktogbtn:function(){

                var that=this;

                this.togbtn.click(function () {

                    that.isint=!that.isint;

                })

            },

            //初始化执行

            start:function(){

                this.len=this.ul.children('li').length;

                var lihtml=this.ul.children('li:nth-child(1)').get(0).outerhtml;

                this.ul.append(lihtml)

                //获取box的宽度   li的宽度和box的宽度一致

                var boxwidth=this.box.width();

                //获取ul的宽度   根据li的总长度来获取

                var ulwidth=boxwidth*(this.len+1);

                //给ul和li添加上宽度

                this.ul.css({

                    width:ulwidth+'px'

                })

                this.ul.children('li').css({

                    width:boxwidth+'px'

                })

 

                //每一次移动的距离

                this.boxwidth=boxwidth;

 

                var that=this;

                //定时器执行轮播

                setinterval(function () {

                    that.indexposition()

                },1000)

 

                var tlen=this.len;

                this.rediusstyle(tlen);

 

            },

            //小圆点的样式

            rediusstyle:function(len){

                var lihtml=[];

                for(var i=0;i<len;i++){

                    lihtml.push('<li></li>')

                }

                this.ulreadius.append(lihtml.join(""));

 

            },

            //点击小圆点

            clickradius:function(){

                var that=this;

                this.ulreadius.on('click','li',function () {

                    that.isint=true;

                    var index=$(this).index();

                    that.index=index-1;

                    that.indexposition();

                    that.isint=false;

                })

            },

            //移入的时候暂停动画   移出继续执行动画

            mousetog:function(){

                var that=this;

                this.box.mousemove(function () {

                    that.isint=false;

                }).mouseout(function () {

                    that.isint=true;

 

                })

            },

            indexposition:function () {

                //判断是否启用轮播动画

                if(!this.isint){

                    return true;

                }

                //指针指向全局page对象

                var that=this;

                //每执行一次轮播一个图片   下标+1

                that.index++;

                // 因为是向右边滚动到  所以是负数

                that.ul.animate({

                    left:-that.index*that.boxwidth

                },300,function () {

                    //根据len的长度判断是否已经轮播到最后一张  如果到最后一张  那么复原从新开始轮播

                    if(that.index==that.len){

                        that.ul.css({

                            left:0

                        },300)

                        that.index=0;

                    }

                })

            }

        }

        page.init();

    })(jquery)

</script>

 

 

</body>

</html>