JQuery纯手搓轮播图【支持自动轮播、划动轮播、圆点联动】

2023-11-14

HTML:

<!-- 轮播图 -->
			<div class="lunbo">
				<!-- 轮播区域 -->
				<div class="lunbo_content">
					<div class="imgContent">
						<img draggable='false' class="imgItem activeImg Started" src="img/lunbo01.jpg">
						<!-- <img draggable='false' class="imgItem" src="img/logo.png"> -->
						<img draggable='false' class="imgItem Ending" src="img/lunbo02.jpg">
					</div>
				</div>
				<!-- 导航圆点 -->
				<div class="yuan">
					<span class="yuanItem yuanItemActive"></span>
					<!-- span class="yuanItem"></span> -->
					<span class="yuanItem"></span>
				</div>
			</div>

JS:

// next() 方法返回被选元素的后一个同级元素。
	// prev() 方法返回被选元素的前一个同级元素。
	// slideDown() 方法以滑动方式显示被选元素。
	// parent() 方法返回被选元素的直接父元素。
	// siblings() 方法返回被选元素的所有同级元素。
	// find() 方法返回被选元素的后代元素。
	// slideUp() 方法以滑动方式隐藏被选元素。
	// substring(开始,结束)截取字符串
	$(function() {
		let index = 0
		let time = ''
		// 鼠标滑动起始位置
		let start = 0
		// 鼠标滑动结束位置
		let end = 0
		automatic()
		$("#ul>li>span").mouseenter(function() {
			$(this).next().slideDown(500);
			$(this).parent().siblings().find("ul").slideUp(500)
		})
		$("#ul").mouseleave(function() {
			$(".li").find("ul").slideUp(500)
		})
		// 上一张事件
		$(".Previous").click(function() {
			Previous()
		})
		// 下一张事件
		$(".Next").click(function() {
			Next()
		})
		// 鼠标悬浮事件
		$(".imgContent").mouseover(function() {
			suspend()
		})
		//鼠标离开事件
		$(".imgContent").mouseout(function() {
			automatic()
		})
		// 上一张逻辑
		function Previous() {
			// 将原先展示(拥有activeImg类名的图片)先保存
			let old = $(".activeImg")
			// 隐藏先前显示的照片
			old.removeClass("activeImg")
			// 判断是否是第一张图片
			// Started为第一张图片的独有类名,用来判断是否为第一张图片,判断上一张边界逻辑
			if (old.is(".Started")) {
				// 是则将最后一张图片显示
				$(".Ending").addClass("activeImg")
			}
			// 否则显示上一张图片
			old.prev().addClass("activeImg")
			// 根据当前显示照片的下标决定显示的圆点
			index = $(".activeImg").index()
			// 调用圆点逻辑方法
			yuanActive()
		}
		// 下一张逻辑
		function Next() {
			let old = $(".activeImg")
			old.removeClass("activeImg")
			// 判断是否是最后一张图片
			// Started为最后一张图片的独有类名,用来判断是否为最后一张图片,判断下一张边界逻辑
			if (old.is(".Ending")) {
				$(".Started").addClass("activeImg")
			}
			old.next().addClass("activeImg")
			$(".activeImg").index(this)
			index = $(".activeImg").index()
			yuanActive()
		}
		// 圆点显示逻辑
		function yuanActive() {
			let arr = $(`.yuanItem:nth-child(${index+1})`)
			$(".yuanItemActive").removeClass("yuanItemActive")
			arr.addClass("yuanItemActive")
		}
		// 计时器
		function automatic() {
			time = setInterval(() => {
				Next()
			}, 3000)
		}
		//悬浮暂停
		function suspend() {
			clearInterval(time)
		}
		//鼠标点击事件
		$(".imgItem").mousedown(function(e) {
			// console.log('x:' + e.pageX + 'y:' + e.pageY)
			start = e.pageX
		})
		// 左键松开事件
		$(".imgItem").mouseup(function(e) {
			// console.log('x:' + e.pageX + 'y:' + e.pageY)
			end = e.pageX
			if (start - end > 100) {
				// console.log("左划")
				Next()
			} else if (end - start > 100) {
				// console.log("右划")
				Previous()
			}
		})

CSS:

/* 轮播 */
.lunbo {
	width: 100%;
	height: auto;
	min-width: 1200px;
}

.lunbo_content {
	width: 100%;
	height: auto;
	z-index: 1;
}

.imgItem {
	width: 100%;
	height: 460px;
	display: none;
}

.activeImg {
	display: block;
}

.yuan {
	width: 100px;
	height: 50px;
	line-height: 50px;
	/* background-color:#463527 ; */
	margin: 0 auto;
	text-align: center;
	z-index: 20;
	margin-top: -50px;
}

.yuanItem {
	display: inline-block;
	width: 10px;
	height: 10px;
	background-color: #5f5f5f;
	border-radius: 50%;
}

.yuanItemActive {
	background-color: blue;
}

.Previous {
	width: 40px;
	height: 390px;
	line-height: 390px;
	background: rgba(0, 0, 0, 0.4);
	position: absolute;
	left: 0;
	color: #fff;
	font-size: 34px;
	text-align: center;
}

.Next {
	width: 40px;
	height: 390px;
	line-height: 390px;
	background: rgba(0, 0, 0, 0.7);
	position: absolute;
	right: 0;
	color: #fff;
	font-size: 34px;
	text-align: center;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JQuery纯手搓轮播图【支持自动轮播、划动轮播、圆点联动】 的相关文章

随机推荐

  • 剑指 Offer 15. 二进制中1的个数

    public class Solution you need to treat n as an unsigned value public int hammingWeight int n int div 1 int num 0 for in
  • 李宏毅 机器学习 2016 秋:3、Gradient Descent

    文章目录 三 Gradient Descent 3 1 Tuning your learning rates 3 2 Stochastic Gradient Descent 3 3 Feature Scaling 3 4 理论支持 三 Gr
  • 免费html5代码,HTML5(示例代码)

    一 什么是HTML5 1 1 HTML5 简介 万维网的核心语言 标准通用标记语言下的一个应用超文本标记语言 HTML 的第五次重大修改 作为新HTML语言 具有新的元素 属性和行为 XHTML可扩展超文本标记语言 是一种增强了的HTML
  • 微信小程序:动画效果集合

    Life is like riding a bicycle To keep your balance you must keep moving 生活就像骑自行车 为了保持平衡 你必须不断前进 微信小程序 心跳动画 https blog cs
  • 使用 appium 进行微信小程序的自动化测试

    目录 前言 微信小程序结构 自动化用例的调整 示例代码 后记 前言 微信小程序是一种流行的移动应用程序 它在移动设备上提供了丰富的功能和用户体验 为了确保微信小程序的质量和稳定性 自动化测试是必不可少的一环 Appium是一个强大的自动化测
  • assert断言(没有返回值,不需要console.log,断言未通过会抛出错误,通过不会抛出错误)

    1 assert value message 保证value是true就不会抛出错误 2 assert deepEqual actual expected message 表达式 1 表示测试 actual 参数与 expected 参数是
  • Custom numeric format strings

    string Multiplier Multiplier 0 Console WriteLine string Format Multiplier 1000000 string LiteralChar LiteralChar 0 000 C
  • vue3 图片路径转base64 base64转file(二进制一般后台需要格式) file转base64

    1 图片路径转64 function imageUrlToBase64 url let homeImage new Image 解决跨域问题 homeImage setAttribute crossOrigin anonymous home
  • 为什么前端监控要用GIF打点

    1背景 我们知道 目前主流的前端监控 百度统计 友盟 谷歌统计 都在用GIF进行打点 但是 为什么这些系统都会使用GIF 难道是因为没有其他的解决方案吗 这得从前端监控的原理说起 2前端监控的原理 所谓的前端监控 其实是在满足一定条件后 由
  • DataTable筛选出现异常

    异常详细信息 System ArgumentException 在 Range 对象中 Min 37 必须小于或等于 max 1 解决方法 转化字段类型为int 再次出现问题 HH gt 0 and HH lt 35 出来的数据序列为 1
  • Android Jetpack 之 DataStore

    1 概述 Google 推出了 JetPack 的新成员 DataStore DataStore 是一种新的数据存储方案 DataStore 以异步 一致的事务方式存储数据 克服了 SharedPreferences 的一些缺点 Jetpa
  • 相机标定及点云拼接

    文章目录 前言 一 相机标定原理 二 关键代码 2 1 相机标定代码1 2 2 相机标定代码2 2 3 点云拼接代码 三 结果展示 总结 前言 在上一篇中已经完成了从图像到点云的转换 但是只针对单个相机 在这一篇中将再进一步 从两个相机拍摄
  • 【Python 1-5】Python教程之——详解字符串

    字符串或串 String 是由数字 字母 下划线组成的一串字符 字符串 字符串就是一系列字符 在Python中 用引号括起的都是字符串 其中的引号可以是单引号 也可以是双引号 如下所示 This is a string This is al
  • vba中function(自定义函数)

    自定义函数 顾名思义 就是自己定义的函数 为什么使用自定义函数 exce内置了很多有用的函数 但仍无法满足工作需求 自定义函数的作用 简化复杂的公式 可以和工作表函数相互嵌套使用 Function 函数名 参数1 参数2 代码 函数名 代码
  • Go语言面试题--进阶语法(32)

    文章目录 1 关于 channel 下面描述正确的是 2 下面的代码有什么问题 3 下面的代码有什么问题 4 下面代码输出什么 1 关于 channel 下面描述正确的是 A close 可以用于只接收通道 B 单向通道可以转换为双向通道
  • 大端小端以及内存对齐的优势

    为什么区分大小端 编程语言中不同类型的变量所占的字节大小不一样 大端 低位数据存放在高位地址为大端编码 小端 低位数据存放在低位地址为小端编码 如图所示 对于选择大端小端对程序性能的思考 首先 数据离散程度不同 字节序会在很大程度上影响速度
  • 零基础学习cJSON 源码详解与应用 (三)cJSON_Print();打印json

    文章目录 一 cJSON Print 源码分析 二 print value 2 1 ensure 2 2 print string 2 3 print number 2 4 print array 2 5 print object 三 up
  • 在Windows中使用虚拟机

    文章目录 VirtualBox使用教程 安装教程 获取 CentOS 及版本选择 在虚拟机上安装CentOS 在虚拟机中允许linux系统卡的原因 配置CentOS 安装图形界面系统 X Window System 安装图形界面程序 GNO
  • 版本控制工具

    版本控制工具 版本控制工具如何下拉库里边的内容 从无到有 在SVN中 在本地库中右键单击 选择tortoise SVN 版本库浏览器 然后输入地址 账号密码登录 登陆完毕后选择要下载的文件右键单击选择检出即可下拉到本地库 在GIT中 在本地
  • JQuery纯手搓轮播图【支持自动轮播、划动轮播、圆点联动】

    HTML div class lunbo div class lunbo content div class imgContent img class imgItem activeImg Started src img lunbo01 jp