jq 方法 简易轮播图

css + body部分 注意img父级的设置

<style>
            * {
                margin: 0;
                padding: 0;
            }

            ul li {
                list-style: none;
            }

            #box {
                height: 260px;
                width: 500px;
                margin: 50px auto;
                position: relative;
                overflow: hidden;
            }
            /* 这里img的父级xian不设置宽度 */
            /* 下面根据图片的数量 */
            #box div {
                position: absolute;
                top: 0;
                left: 0;
            }

            #box div img {
                width: 500px;
                height: 260px;
                float: left;
            }

            .but .right {
                height: 50px;
                width: 50px;
                position: absolute;
                left: 450px;
                top: 105px;
            }

            .but .left {
                height: 50px;
                width: 50px;
                position: absolute;
                top: 105px;
                left: 0;
            }

            .dian {
                position: absolute;
                bottom: 5px;
                left: 50%;
                transform: translateX(-50%);
            }

            .dian li {
                float: left;
                height: 10px;
                width: 10px;
                border-radius: 5px;
                background-color: #E84A7E;
                margin: 0 5px;
            }

            .dian .act {
                background-color: papayawhip;
            }
        </style>

<body>
      <div id="box">
        <div id="box1">
            <img src="img/1.jpg" />
            <img src="img/2.jpg" />
            <img src="img/3.jpg" />
            <img src="img/4.jpg" />
            <img src="img/5.jpg" />
            <img src="img/1.jpg" />
        </div>

    <div class="but">
        <button class="right">>>></button>
        <button class="left"><<<</button>

    </div>

    <ul class="dian">
    </ul>
</div>

</body>

js部分

<script src="jquery.js"></script>
    <script>
        // 1选择元素
        var $box = $("#box1")
        var $img = $box.find("img")
        var $right = $(".right")
        var $left = $(".left")
        var $dian = $(".dian")
        // 2获取图片的个数
        var num = $img.length;
        // 3给img的父级设置宽度  数量*1个的宽度
        $box.width($img.length * $img.width())
        console.log($img.width())
        // $box[0].style.width = $img.length * $img.width() +"px"
        // console.log($box.width())
        // 设置图片起始索引
        var index = 0

        //4点击右按钮是
        //因为是让img的直接父级滚动
        //如果不在最后加上第一张的话,
        //当动画走到最后一张时再点击的时候应该是到第一张,
        //但是这个时候第一张会从右边出来,所以,
        //在最后添加一个img
        // 改变index的值为1
        $right.on("click", function() {
            if (index === num - 1) {
                //5不加不在最后加上第一张的为0
                // index = 0
                index = 1
                // 6当它走到最后的时候,再点击还是会从右边出来
                // 所以强行把box1这个盒子回到最开始的位置
                $box[0].style.left = 0 + "px"
            } else {
                index++
            }
            // console.log(index)
            $box.stop().animate({
                // 7每点击一次走的长度 当前这个图片*一个图片的宽度
                left: -index * $img.width()
            })
            //10将class属性设置给当前图片的索引,图片走到谁身上,第几个小点点就变色
            $dian.find("li").eq(index).addClass("act").siblings().removeClass()
        })

        $left.on("click", function() {
            if (index === 0) {
                //点击左按钮的时候,设置索引   和 box1走到最后 之后的位置
                index = $img.length - 2
                $box[0].style.left = -($img.length) * $img.width() + "px"
                // console.log($box[0].style.left)
            } else {
                index--
            }
            // console.log(index)
            $box.stop().animate({
                left: -index * $img.width()
            })
            //10将class属性设置给当前图片的索引,图片走到谁身上,第几个小点点就变色
            $dian.find("li").eq(index).addClass("act").siblings().removeClass()
        })

        var str = ""
        // 8循环遍历num,给ul加li
        for (var i = 0; i < num; i++) {
            str += `<li></li>`
        }
        $dian.html(str)
        // 9并且给第一张加上class属性
        $dian.find("li").eq(0).addClass("act")

        //11 开启计时器,执行点击事件
        //相当于每隔一定的时间去点击了一次左右按钮
        // 注意 用到click的方法
        var time;
        time = setInterval(function() {
            $right.click()
        }, 3000)
        //12 hover方法
        //鼠标进入 停止自动轮播
        //鼠标移出 开启
        $box.hover(function() {
            clearInterval(time)
        }, function() {
            time = setInterval(function() {
                $right.click()

            }, 3000)
        })

        //13 最难理解的一步  click根据需要可以改成mouseenter
        //鼠标点击的是谁 获取当前的索引值 给它保存到actindex上 并设置给index
        $dian.find("li").on("click", function() {
            var actindex = $(this).index()
            index = actindex
            //并让当前的点击的开启
            $box.stop().animate({
                left: -index * $img.width()
            })
            //点击的这个小点点加上属性
            $dian.find("li").eq(index).addClass("act").siblings().removeClass()
        })
    </script>

原文地址:https://www.cnblogs.com/shun1015/p/11588397.html

时间: 2025-01-10 16:32:47

jq 方法 简易轮播图的相关文章

原生JS实现简易轮播图

原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = function() { var tab = 0; var loop_imgs = new Array("img/l1.jpg", "img/l2.jpg", "img/l3.jpg", "img/l4.jpg", "img/l5

jQuery实现简易轮播图的效果

(图片素材取自于小米官网) 刚开始接触jQuery的学习,个人觉得如果为了实现多数的动态效果,jQuery的确很简易方便. 下面简易的轮播图效果,还请前辈多多指教~ (努力学习react vue angular中,加油~~~) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> &

使用jq深入研究轮播图特性

网站轮播图 太耳熟的词了  基本上做pc端的 主页绝壁会来一个轮播图的特效 轮播图他一个页面页面的切换,其实的原理是通过css的定位 ,定位到一起,第一张首先显示,其余默认隐藏. 今天我实现的这个轮播仅是一个下面带数字的简单轮播,先搭好框架,以后遇到实际项目可根据这个的原有的基础上,进行调试 第一步 写好html <div id="banner"> <ul> <li class="on">1</li> <li&g

简易轮播图

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

用CSS代码编写简易轮播图

废话不多说,直接上代码 <!doctype html> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> .container{ width: 1000px; height: 500px; margin: 50px auto; overflow: hidden; backgro

Swift3.0 轮播图

使用三个UIButton实现无限轮播:https://github.com/LXfeiYu/LXCarouselImages.git 喜欢的朋友给个星!!! 功能: 1.可以选择开启和关闭定时器 2.有点击事件 使用方法: //添加轮播图 let showView = LXShowView.init(frame: CGRect(x:0,y:20,width:self.view.frame.size.width,height:200)) showView.isUserInteractionEnab

jq轮播图支持ie7

用过一些轮播框架  但是有的不正常ie7 所以就自己找资料写了一个 代码不粗糙的 <!DOCTYPE html><html><head><title>轮播图支持ie7依赖jq</title><meta charset="utf-8" /><script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script

2015.7.29 第十三、十四课 jq实例(磁力图片、轮播图、腾讯课堂菜单、可弹出红色菜单、砸蛋游戏)

1.磁力图片: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type="text/cs

层叠轮播图的简易制作

之前做过很多不同样式的轮播图,不是通过改变left值使图片左右移动的,就是改变透明度实现轮播图的,偶然在网易云上看到了层叠轮播图,它转换图片的方式和其他轮播图有些不同,我从来没做过这种轮播图,思考了很久该用什么方法做,终于做出来了一个简陋的成品.由于轮播图的图片是网上找来的,所以我做了模糊处理,用清晰的图片效果更好,这里是我的一个演示(没有录制鼠标):  思路和方法 我所能想出的最简单的方法就是先给轮播图中的几张图片特定的class值,再通过改变图片class的值来改变他们的位置 话不多说,上代