html图片轮播_【技能提升】用jQuery如何手写一个简单的轮播图?(附代码)

11d51409a3dc9aa17f921024d9b32949.png

用jQuery如何手写一个简单的轮播图?下面本篇文章通过代码示例来给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

edbf80b08fbf642f88c313e04b989981.png

用 jQuery 手写轮播图

先上个效果截图:

33673315b3e4f40418c6c6123351a25f.png

主要包含以下功能点:

* 1、页面加载完,自动循环翻页

* 2、翻页按钮,翻页

* 3、定点翻页

* 4、翻页时同步圆点状态

* 5、鼠标进入,停止自动翻页

* 6、快速点击翻页的bug(加 isPaging 标志)

主要包含以下功能点:

* 1、页面加载完,自动循环翻页

* 2、翻页按钮,翻页

* 3、定点翻页

* 4、翻页时同步圆点状态

* 5、鼠标进入,停止自动翻页

* 6、快速点击翻页的bug(加 isPaging 标志)

好了,直接上代码:

<html>    <head>        <meta charset="utf-8">        <title>轮播图 - jQuery 版本title>        <style>            *{                margin: 0;                padding: 0;            }            ul{                list-style: none;            }                        /**             * 轮播图布局样式             */                        /**             * 0、轮播图容器             */            #container{                position: relative;                width: 600px;                height: 400px;                margin: 50px auto;                overflow: hidden;            }                        /**             * 1、图片(模拟)             */            ul#imgs{                position: absolute;                width: calc(600px * 7);                left: -600px;            }            ul#imgs li{                float: left;                width: 600px;                height: 400px;                                background-color: #42B983;                color: white;                text-align: center;                line-height: 400px;                font-size: 100px;            }            #imgs li:nth-child(odd){                /* 模拟图片 */                /*background-color: #9ACD32;*/            }                        /**             * 2、前后翻页按钮             */            #prev,#next{                position: absolute;                top: calc(50% - 15px);;                width: 40px;                height: 30px;                background-color: yellow;                border: none;                font-weight: bold;                font-size: 16px;                cursor: pointer;                opacity: .6;                -webkit-user-select: none;                -moz-user-select: none;                -ms-user-select: none;                user-select: none;            }            #prev,#next:focus{                outline: none;            }            #prev{                left: 10px;            }            #next{                right: 10px;            }                        /**             * 3、小圆点定点翻页             */            ul#index{                position: absolute;                top: 360px;                left: calc(50% - 55px);                height: 12px;            }            ul#index li{                float: left;                height: 12px;                width: 12px;                margin: 0 5px;                border-radius:50%;                background-color: #800080;                opacity: .4;                cursor: pointer;            }            ul#index li.active{                opacity: 1;            }style>        <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js" type="text/javascript" charset="utf-8">script>    head>    <body>                <div id="container">                        <ul id="imgs">                <li>                    <div class="img">5div>                li>                <li>                    <div class="img">1div>                li>                <li>                    <div class="img">2div>                li>                <li>                    <div class="img">3div>                li>                <li>                    <div class="img">4div>                li>                <li>                    <div class="img">5div>                li>                <li>                    <div class="img">1div>                li>            ul>            <button id="prev">>button>            <button id="next"><button>            <ul id="index">                <li class="active">li>                <li>li>                <li>li>                <li>li>                <li>li>            ul>        div>        <script type="text/javascript">            /**             * 事件绑定             * 1、页面加载完,自动循环翻页             * 2、翻页按钮,翻页             * 3、定点翻页             * 4、翻页时同步圆点状态             * 5、鼠标进入,停止自动翻页             * 6、快速点击翻页的bug(加 isPaging 标志)             */                        /**             * 0、自动轮播             */                        /**             * 一些可以设置的参数             */            var PAGE_WIDTH = 600,                PAGE_SLIDE_TIME = 600,    //单页滑动时间                PAGE_INTERVAL = 1200 + PAGE_SLIDE_TIME,    //换页间隔时间                curIndex = 1,    //合法取值 1 ~ 5(0 表示左边假的,6表示右边假的)                isPaging = false    //是否正在翻页(用来处理连续点击翻页产生的bug)                            var intervalId;            $(function(){                intervalId = setInterval(next,PAGE_INTERVAL)            })                        /**             * 1、页面按钮             */            $("#next").click(function(){                next()            })                        $("#prev").click(function(){                next(false)            })                        $("#index li").click(function(){                next($(this).index() + 1)            })                        /**             * 2、鼠标出入             */            $("#container").hover(function(){                clearInterval(intervalId)            },function(){                intervalId = setInterval(next,PAGE_INTERVAL)                        })                        /**             * 翻页核心功能             * next(boolean|number])             *              *         boolean:    表示前后翻页             *         number:        表示定点翻页             */            function next(flag=true){                                if(isPaging){                    return                }                isPaging = true;                                var tempIndex = curIndex;                                //1 确定要翻过去的页码,计算 left 值                typeof flag === "boolean" && (curIndex += flag ? 1 : -1)                typeof flag === "number" && (curIndex = flag)                left = - curIndex * PAGE_WIDTH                                //2 执行翻页动画                $("#imgs").animate({"left":left},PAGE_SLIDE_TIME,function(){                    if(curIndex == 0 || curIndex == 6){                        //页码校正                        curIndex == 0 && (curIndex = 5);                        curIndex == 6 && (curIndex = 1)                                                                        left = - curIndex * PAGE_WIDTH                        $("#imgs").css("left",left)                    }                    //清除正在翻页标志                    isPaging = false                })                                //3 同步点的状态                if(curIndex == 0 || curIndex == 6){                    curIndex == 0 && updateIdxState(0,4);                    curIndex == 6 && updateIdxState(4,0);                }else{                    updateIdxState(tempIndex -1,curIndex -1)                }                                function updateIdxState(oldIdx,newIdx){                    $("#index li").eq(oldIdx).removeClass("active")                    $("#index li").eq(newIdx).addClass("active")                }            }script>    body>html>

701668d51d569ec11fc33ad9c9055e87.png

来源 | html中文网

审核 | 吕梁 曾琦 李明辉(总编辑)

监制 | 方正

山东传媒职业学院信息工程系

新媒体中心

563858367001733a00448388ff965527.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值