使用Jquery实现轮播图

虽然轮播图已经有很多第三方库,但是手动实现一个还是能够对javascript有一个更深的理解。

今天就讲一讲如何使用Jquery实现轮播图

首先html结构如下: 

<div class="scroll">

     // 结合下面的css样式可以知道: 下面是五张轮播图片一开始重叠在

      // 父级元素的左上角,轮播图在JS中是通过opacity透明度来控制是否显示的

        <ul id="scroll">     

            <li><a href="plus5.html"><img src="img/scroll_01.jpg" alt=""></a></li>

            <li><a href="plus5.html"><img src="img/scroll_02.jpg" alt=""></a></li>

            <li><a href="plus5.html"><img src="img/scroll_03.jpg" alt=""></a></li>

            <li><a href="plus5.html"><img src="img/scroll_04.jpg" alt=""></a></li>

            <li><a href="plus5.html"><img src="img/scroll_05.jpg" alt=""></a></li>

            <li><a href="plus5.html"><img src="img/scroll_06.jpg" alt=""></a></li>

        </ul>

        <div class="scroll_dot">

             <!-- 以下是六个圆点的占位 -->

            <span class="scroll_dot_span"></span>

            <span></span>

            <span></span>

            <span></span>

            <span></span>

            <span></span>

        </div>

        <div class="scroll_arrows">

            <a href="javascript:void(0);"><span class="left scroll_arrows_back">〈</span></a>

            <a href="javascript:void(0);"><span class="right scroll_arrows_back">〉</span>                         </a>

        </div>

 </div>

CSS样式如下:

.scroll #scroll  img {

  width: 1226px;

  position: absolute;

  top: 0;

  left: 0;

}

.scroll_dot {

  width: 120px;

  height: 10px;

  position: absolute;

  bottom: 20px;

  right: 20px;

  z-index: 20;

}

.scroll_dot span {

  width: 6px;

  height: 6px;

  border: 2px solid #e0e0e0;

  background: #cdcac2;

  border-radius: 50%;

  margin: 0 5px;

  display: block;

  float: left;

}

.scroll_dot .scroll_dot_span {

  background: white;

}

.scroll_arrows span {

  width: 41px;

  height: 70px;

  text-align: center;

  line-height: 69px;

  color: #5f5750;

  position: absolute;

  top: 50%;

  font-size: 40px;

  z-index: 20;

  margin-top: -35px;

}

.scroll_arrows .scroll_arrows_back {

  background: #5f5750;

  color: white;

}

.scroll_arrows .left {

  left: 260px;

}

.scroll_arrows .right {

  right: 0;

}

 下面重点看一下JS部分是如何实现的

       var n = 0;  //记录轮播图当前索引

        var t = setInterval(fun, 5000); // 设置一个定时器用于播放轮播图

  

      // 重点: 轮播图的播放函数,

        function fun() {

            n++;

            // 此时判断轮播图索引是否越界,如果越界则将n重置为0

            if (n > $(".scroll>ul>li").length - 1) {            

                n = 0;

            }

           // 这里可以看到是通过opacity来控制轮播图是否显示的

          // eq(n)表示从当前li集合中指定索引为n的元素

            $(".scroll>ul>li").css("opacity", "0").eq(n).css("opacity", "1")

   // 控制轮播图下面的圆点样式,实现圆点跟随轮播图移动(移动的圆点是白色背景,默认是灰色背景,白色更显眼)    ,   siblings表示该元素所在集合中的其他兄弟元素  $(".scroll_dotspan").eq(n).addClass("scroll_dot_span").siblings().removeClass("scroll_dot_span");

           }

     // 点击左箭头让轮播图回调到上一张图片

        $(".scroll_arrows .left").click(function () {

            n -= 2; // 这里减二,是因为fun函数中: n会自增+1,而后面会调用fun函数。

            if (n < -1) { // 这里是判断越界:如果当前已经是第一张图片,那么再回退就轮转到最后一张图片,也就是索引是5,但是fun函数会自增加1,所以n取值4。

          左越界的标准是小于-1是因为如果是-1,那么到了fun函数自增+1就变成了0,那么就是第一张图片了,相当于原地不动。

                n = 4;

            }

            fun()

        });

    //  点击右箭头让图片快进一张

        $(".scroll_arrows .right").click(function () {

            fun()

        });

   // 点击轮播图圆点时,将图片切换到该圆点索引对应的图片     

   $(".scroll_dot span").click(function () {     

            // 获取点击圆点的索引      

            n = $(this).index() - 1;   // index()函数是jquey中获取该元素在所属集合中的索引。

          // 将除了被点击圆点之外的圆点都设置为默认灰色背景,当前被点击圆点的背景设为白色

            $(this).siblings().removeClass("scroll_dot_span").end().addClass("scroll_dot_span");

            fun()  // 播放圆点对应的图片

        });

        // 这里hover函数接收两个参数:移入时执行的函数和移出时的函数,中间用逗号做分隔符

        // 这是jquery hover方法特有用法

        $(".scroll").hover(function () {

            clearInterval(t); // 鼠标移入时清除定时器

        }, function () {

            // 鼠标移出时,又设置了一个定时器

                t = setInterval(fun, 5000);

            });

 从以上代码可以看到:代码的核心是js定时器, 全局图片索引的确定,jquery对dom元素的样式控制,轮播图中对索引越界的判断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/78645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低代码框架开发平台厂家:做好产品,实现流程化办公!

在新的发展时代&#xff0c;低代码技术平台拥有诸多优势特点&#xff0c;成为广大企业实现降本、增效办公效率的得力助手。什么样的低代码框架开发平台厂家值得信任与青睐&#xff1f;都有哪些主要产品&#xff1f;为了帮助大家了解这一讯息&#xff0c;一起来了解流辰信息低代…

记录一次使用网云穿实现内网穿透操作

记录一次使用网云穿实现内网穿透操作 摘要 这段时间也很少写博客了,一方面工作表较忙,一方面觉得有些东西在百度上都能找到,甚至比我自己记录的详细,有些笔记也就没打, 这次记录笔记主要是觉得这个 网云穿 很好用,分享给大家. 1 什么是内网穿透? 内网穿透也叫内网映射&#xf…

【Android知识笔记】进程通信(一)

一、Android Framework 用到了哪些 IPC 方式 Linux 的 IPC 方式有: 管道Socket共享内存信号信号量消息队列管道通信 管道是基于pipefs文件系统实现的,也就是多个进程通过对同一个文件进行读写来实现进程间通信。半双工,单向的,通过 pipe(fds) 系统函数调用可得到一对文件描…

离散高斯抽样(Discrete Gaussian Sampling)

离散高斯抽样 离散高斯抽样&#xff08;Discrete Gaussian Sampling&#xff09;是一种常见于密码学和数学领域的随机采样方法。它通常用于构建基于格&#xff08;lattice&#xff09;的密码学方案&#xff0c;如基于格的加密和数字签名。Discrete Gaussian Sampling 的主要目…

20个非常有用的单行Python代码片段

1. 写在前面 继上篇&#xff0c;继续在本文分享 20 个 Python 单行代码&#xff0c;可以在 30 秒或更短时间内轻松学会。这些单行代码不仅可以提高效率&#xff0c;同时使代码看起来更整洁、更易读。&#xff1a;&#xff09; 个人博客&#xff1a; https://jianpengzhang.git…

MFC|选择获取文件路径

参考&#xff1a;mfc按钮选择文件或者文件夹&#xff08;https://blog.csdn.net/qq_39433050/article/details/130261518&#xff09; 点击按钮槽函数&#xff0c;选择文件 void CMFCStartGrabDlg::OnBnClickedSelectfile() {// TODO: Add your control notification handler…

JetBrains设置inline hint的背景色、前景色

如题。修改IDE的hint前景色和背景色。 修改后结果&#xff1a;

Spring Boot + Vue的网上商城之物流系统实现

Spring Boot Vue的网上商城之物流系统实现 思路 当构建一个物流系统时&#xff0c;我们可以按照以下步骤进行&#xff1a; 设计数据模型&#xff1a;首先确定系统中需要存储的数据&#xff0c;例如物流公司信息、物流订单信息等。根据需求设计相应的数据模型&#xff0c;包括…

2023/9/14 -- C++/QT

作业&#xff1a; 仿照Vector实现MyVector&#xff0c;最主要实现二倍扩容 #include <iostream>using namespace std;template <typename T> class MyVector { private:T *data;size_t size;size_t V_capacity; public://无参构造MyVector():data(nullptr),size(…

数据可视化大屏模板 | 保姆级使用教程

近来很多朋友私信咨询怎么下载使用数据可视化大屏模板&#xff0c;在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存&#xff0c;以便不时之需。 数据可视化大屏制作软件&#xff1a;奥威BI系统 数据可视化报表模板板块&#xff1a;模板秀 主要操作&…

Redis常用应用场景

Redis是一款开源的基于内存的键值存储系统&#xff0c;它提供了多种数据结构和丰富的功能&#xff0c;适用于各种不同的应用场景。以下是Redis常用的应用场景&#xff1a; 1.缓存&#xff1a;Redis最常见的用途就是作为缓存。由于Redis存储在内存中&#xff0c;读取速度非常快…

opencv 轮廓顶点重新排序----四边形

def reorder(myPoints):# print(myPoints.shape)# 创建一个与myPoints具有相同形状和类型的数组myPointsNew np.zeros_like(myPoints)# 数组重塑为一个4行2列的数组myPoints myPoints.reshape((4,2))# 计算myPoints数组中每一行&#xff08;即每个点&#xff09;的坐标和add …

使用navicat for mongodb连接mongodb

使用navicat for mongodb连接mongodb 安装navicat for mongodb连接mongodb 安装navicat for mongodb 上文mongodb7.0安装全过程详解我们说过&#xff0c;在安装的时候并没有勾选install mongodb compass 我们使用navicat去进行可视化的数据库管理 navicat for mongodb下载地址…

Python —— 捕获异常

1、Python中常见的异常 & 捕获异常 1、常见异常 1、NameError: name a is not defined 2、IndexError: list index out of range 3、KeyError: nam 4、ValueError: invalid literal for int() with base 10: b 5、ZeroDivisionError: div…

Windows10环境下安装VMware虚拟机来安装 CentOs7

软硬件准备 软件&#xff1a;VMware(16 pro)&#xff1a;阿里云盘分享. 硬件&#xff1a;因为是在宿主机上运行虚拟化软件VMware安装centos&#xff0c;所以对宿主机的配置有一定的要求。最起码i5CPU双核、硬盘500G、内存4G以上。 镜像&#xff1a;CentOS7 ,下载地址 http://is…

Python工程师Java之路(p)Module和Package

文章目录 1、Python的Module和Package2、Java的Module和Package2.1、Module2.1.1、分模块开发意义2.1.2、模块的调用 2.2、Package Module通常译作模块&#xff0c;Package通常译作包 1、Python的Module和Package Python模块&#xff08;Module&#xff09;&#xff1a;1个以.…

算法|Day49 动态规划17

LeetCode 647- 回文子串 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目描述&#xff1a;给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子…

免费音乐下载网站分享(MP3文件格式)

免费音乐下载网站分享&#xff08;MP3文件格式&#xff09; 最近需要下载一些歌曲&#xff0c;发现很多音乐app上下载文件都需要vip&#xff0c;再上网查询了一番&#xff0c;最后发现了一个宝藏网站&#xff0c;可以免费下载各种格式的MP3文件&#xff0c;在这里给大家分享一…

Python+Appium自动化测试-编写自动化脚本

之前已经讲述怎样手动使用appium-desktop启动测试机上的app&#xff0c;但我们实际跑自动化脚本的过程中&#xff0c;是需要用脚本调用appium启动app的&#xff0c;接下来就尝试写Python脚本启动app并登陆app。环境为Windows10 Python3.7 appium1.18.0 Android手机 今日头条…

Android USB电源管理

The USB peripheral detects the lack of 3 consecutive SOF packets as a suspend request from the USB host. 1 驱动shutdown顺序 系统关机或重启的过程中&#xff0c;会调用设备驱动的shutdown函数来完成设备的关闭操作&#xff0c;有需要的设备可以在驱动中定义该函数。其…