使用jQuery实现图片轮播

图片轮播的基本原理如下图

 

 可以设置overflow:hidden来隐藏除了要显示的图片之外的图片(即其他三张图)

以下为实现代码

index.css文件放置css代码

*{
    margin: 0;
    padding: 0;
}

.container{
    width: 100em;
    margin: 0 auto;
}
/* 所有图片div */
.myimage{
    position: absolute;
    width: 400%;
}
/* 单张图片 */
.myimage>img{
    width: 25%;
    height: 650px;
    float: left;
}
/* 显示图片div */
.carousel{
    width: 100em;
    height: 550px;
    overflow: hidden;
    position: relative;
}

.carousel:hover .commons{
    display: block;
}

/* 按钮共同样式 */
.commons{
    width: 50px;
    height: 150px;
    font-size: 3.4em;
    line-height:150px;
    text-align: center;
    background-color: rgba(161, 150, 150,0.3);
    display: none;
}
/* 左按钮 */
.btn-left{
    position: absolute;
    bottom: 43%;
}
/* 右按钮 */
.btn-right{
    position: absolute;
    bottom: 43%;
    left: 96.8%;
}

.cycle{
    width: 100px;
    height: 10px;
    position: absolute;
    left: 49%;
    bottom: 10%;
}

/* 圆点 */
.cycle>span{
    width: 10px;
    height: 10px;
    border: 1px solid black;
    border-radius: 50%;
    display: inline-block;
}
.on{
    background-color: rgb(41, 39, 39);
}

index.html

 <div class="container">


        <!-- 图片轮播 -->
        <div class="carousel">
            <div class="myimage">
                <img src="image/1.jpeg" alt="pic1">
                <img src="image/2.jpeg" alt="pic2">
                <img src="image/3.jpeg" alt="pic3">
                <img src="image/4.jpeg" alt="pic4">
            </div>
            <div style="clear:both"></div>
            <div class="btn-left commons">&lt;</div>
            <div class="btn-right commons">&gt;</div>


            <div class="cycle">
                <span index="0" class="on"></span>
                <span index="1"></span>
                <span index="2"></span>
                <span index="3"></span>
            </div>

        </div>

    </div>

index.js

 $(function () {
            // 全局变量初始值
            var index = 0;
            // 轮播图的宽度 
            carouselWidth = $(".carousel").width();

            // 左移按钮点击事件
            $(".btn-left").click(function () {
                slidepage(true);
            })
            // 右移按钮点击事件
            $(".btn-right").click(function () {
                slidepage(false);
            })


            // 翻页函数 true上一页  false下一页
            function slidepage(myBoolean) {

                var offsetLeft = 0;    // 位移大小

                if (myBoolean) {

                    if (index == 0) {
                        index = 3;
                        offsetLeft = -carouselWidth * index;
                    }
                    else {
                        index--;
                        offsetLeft = -carouselWidth * index;
                    }
                }
                else {
                    if (index == 3) {
                        index = 0;
                        offsetLeft = 0;
                    }
                    else {
                        index++;
                        offsetLeft = -carouselWidth * index;
                    }

                }

                // 添加移动动画
                $(".myimage").animate({ left: offsetLeft + "px" }, 300);
                // 圆点跟随移动
                $(".cycle>span").eq(index).addClass("on").siblings().removeClass("on");
            }

            // 周期轮播
            setInterval(slidepage, 4000);


            // 点击圆点移动到相应图片
            $(".cycle>span").click(function () {
                // 相应圆点亮
                $(this).addClass("on").siblings().removeClass("on");
                //点击圆点赋予相应位移  赋值给全局变量
                index = $(this).attr("index");
                $(".myimage").animate({ left: -carouselWidth * index + "px" }, 200);
            });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值