关于jQuery实现轮播图和基本属性的操作

news/2024/4/30 8:08:14/文章来源:https://blog.csdn.net/weixin_50112395/article/details/126278399

在这里插入图片描述
write less do more ——写得少做的多
通过 封装技巧,把原生DOM操作进行了封装

  • 代码简化
  • 自动遍历
  • 函数重载机制-制作多功能的函数

用法:

  • $:万能的函数
    • $(字符串):当成是选择器来使用,找到元素里面的JQ对象
    • $(DOM):元素封装到JQ对象里面
  • JQ对象的原型中-存在很多的方法
    • css:操作style内联样式
    • click:批量点击事件
    • class
      • addClass :添加
      • removeClass:删除
      • toggleClass:切换
  • 显示与隐藏
    • show :显示
    • hide:删除
    • toggle :切换
  • 选择器
    • eq=(n):找出查询结果中序号n的元素
    • parent():父元素
    • siblings():兄弟元素
    • next():下一个兄弟

jquery动画

我们知道动画主要分为两种
动画方式1:补间动画 transition
动画方式2:animation动画:专业的
而query是通过style来修改样式实现动画的
首先我们来尝试最基本的动画来尝试一下

案例:位置调整动画

查询出标签

const $box=$('#box')

注意:如果是jq对象则变量名用我们一般以$作为前缀,以区分(这是大家认可的规范
找到第一个button标签

$('button').eq(0).click(function() {})
// 找到第一个button标签

然后设置动画
动画属性animate
第一个参数为style样式可以使用小驼峰的写法也可以直接写原版样式
第二个参数为动画时间单位为毫秒
参数三是动画完毕之后的回调函数

$box.animate({borderRadius:'50%'
})

当然也支持动画队列

$("button")
.eq(0)
.click(function () {// 让盒子变圆// animate:以动画的形式修改元素的style// 参数1:style样式$box.animate({borderRadius: "50%",});// 参数12$box.animate({top: "100px"},2000);// 参数123$box.animate({left: "100px"},2000,function(){alert("动画结束")});
});

动画停止使用stop的方法
参数1:清空动画队列(false/true)默认是关的
参数2:结束时是否跳转到动画结束时的状态(false/true)默认是关的

$('button').eq(1).click(function () {$box.stop(true,true)
})

效果图:
在这里插入图片描述
主体框架代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>#box {width: 100px;height: 100px;background-color: orange;position: relative;}</style></head><body><button>开始</button><button>结束</button><div id="box"></div><script src="./js/jquery-3.6.0.js"></script><script>// 查询出标签const $box = $("#box");// 如果是jq对象则变量名用$作为前缀,以区分$("button").eq(0).click(function () {// 让盒子变圆// animate:以动画的形式修改元素的style// 参数1:style样式$box.animate({borderRadius: "50%",});// 参数12$box.animate({top: "100px",},2000);// 参数123$box.animate({left: "100px",},2000,function () {alert("动画结束");});});$("button").eq(1).click(function () {$box.stop(true, true);});// 找到第一个button标签</script></body>
</html>

jquery轮播图

首先准备好图片,不好准备的可以直接去下载我准备的图片
点击下载

轮播图的原理

图片如下图排列,当要切换的时候移动他的位置来达到切换的效果
在这里插入图片描述
下面我们来制作一个轮播图
首先制作出框架然后再去写控件
在这里插入图片描述
代码如下

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>轮播图</title><style>/* 样式 *//* 换页按钮 */* {margin: 0;}#img_box {width: 480px;height: 320px;/* overflow: hidden; */border-radius: 10px;}#img_box > #img_item {/* width: 480px; */height: 320px;overflow: hidden;border-radius: 10px;display: flex;}#img_box > #img_item > img {width: 480px;height: 320px;}#btn_too {width: 480px;height: 320px;position: fixed;top: 0;display: flex;justify-content: space-between;align-items: center;}#btn_too >button{width: 40px;height: 60px;}#btn_too > #list_item {width: 480px;height: 20px;display: flex;justify-content: center;position: absolute;bottom: 0;}#btn_too > #list_item > span {width: 12px;height: 12px;background-color: rgb(184, 182, 89);border-radius: 50%;display: inline-block;margin-left: 10px;margin-right: 10px;/* position: relative; *//* top: 0; */}#btn_too > #list_item > span.active {width: 12px;height: 12px;background-color: rgb(31, 31, 21);border-radius: 50%;display: inline-block;margin-left: 10px;margin-right: 10px;}</style></head><body><div id="img_box"><div id="img_item"><img src="./img/1.jpg" alt="" /><img src="./img/2.jpg" alt="" /><img src="./img/3.jpg" alt="" /><img src="./img/4.jpg" alt="" /></div><div id="btn_too"><button>上一张</button><button>下一张</button><div id="list_item"><span class="active"></span><span></span><span></span><span></span></div></div></div><script src="./js/jquery-3.6.0.js"></script><script></script></body>
</html>

现在我们开始来写控件
首先我们要给小圆点添加悬浮上去就高亮

 $('span').mouseover(function(){// 添加上class他的兄弟去除掉active状态$(this).addClass('active').siblings().removeClass('active');
})  

在这里插入图片描述
不知道API的可以先去看我上一篇的jquery的文章
传送门:

我们实现了切换了之后接下来我们就要实现点击之后切换了
首先我们要获取
示意图:
在这里插入图片描述
获取数据的代码:

// 获取轮播的宽度
const width = $('#img_item').width();
console.log(width);
// 获取当前小圆点的序号
const index=$(this).index();
console.log(index);

然后我们就可以实现获取他的数据
在这里插入图片描述
既然获取数据了我们要实现切换就简单了
我们先计算需要移动的数据然后去操作就可以了

	$("#img_item").animate({ left: -(index * width) }, 1000);

效果如下:
在这里插入图片描述
但是下面又出现了新的问题:

为什么我都没有放到导航栏上面他都还会继续动画呢?
在这里插入图片描述

这是由于动画序列,要解决的话就需要在新的动画开始之前先移除之前的动画
现在我们实现了鼠标聚焦切换的操作了,现在我们要实现点击切换按钮切换的方式了
首先获取点击

$('#btn_too>button').eq(1).click(function () {});

触发:首先获取当前激活小圆点的序号然后跳转 下一个小圆点的激活时间
但是现在是最后一个了我们要跳回第一个,所以我们需要判断一下
所以条件就是当前激活项与最后一个项目的时候

$('#btn_too>button').eq(1).click(function () {if($('span.active').index()==$('span:last-child').index()){$('span:first-child').mouseover();return 1// 终止函数执行,防止下面的执行之后跳到下面去(1=》2)}$("span.active").next().mouseover()
});

效果:
在这里插入图片描述

现在我们成功制作了点击和聚焦导航切换了,但是一个合格的轮播图就必须要有定时器才合格所以接下来我们制作定时器
实现代码:

// 定时器每xx秒触发下一页的活动
setInterval(() => {$('button').eq(1).click();
}, 3000);

在这里插入图片描述
完全代码:
在这里插入图片描述

jquery属性值的操作

点语法

<body><a href="http://www.baidu.com" title="baidu" data-x="10" data-y="20">百度一下</a><script src="./js/jquery-3.6.0.js"></script><script>var $a=$('a')// 读取点语法 和 getAttribute两种console.log($a.prop('href'));console.log($a.prop('title'));</script>
</body>

在这里插入图片描述

getAttribute方法

在这里插入图片描述

在这里插入图片描述

自定义属性——存在dataset里的属性

data方法:读取自定义属性
在这里插入图片描述

在这里插入图片描述
当然这些属性除了前面的data其他的都不是固定的
所以写的话就可以为
在这里插入图片描述

修改固定的属性

第一个参数:属性名
第二个参数:更新值
在这里插入图片描述
在这里插入图片描述

修改自定义属性

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

spring cloud 集成seata记录

spring cloud 集成seata记录 下载安装包 地址 解压 配置 解压后是没有config.txt文件的&#xff0c;需要新建三个文件 1. config.txt 放在seata根目录下 这个文件要修改下面几个地方 这里要对应配置文件的这里 注意&#xff1a;这里有个坑&#xff0c;部署到服务器上面会…

算法入门之队列

算法入门之队列 前言 队列和栈及其类似&#xff0c;队列在现实生活中的例子就是隧道&#xff0c;单通道一条线&#xff0c;先进去的先出来&#xff0c;后进去的后出来。 在算法中的队列也是这样 队列中从队头位置出队&#xff0c;从队尾入队&#xff0c;队列中的元素永远是先…

三问 Python:能干什么?为什么火?会继续火吗?

前段时间&#xff0c;博主的学校出了毕业率的统计报告。基本就业率都有90%,由于我的大学里面并没有开设Python的学习课程&#xff0c;这意味着没有python的校招&#xff0c;在我的大学开设的主流课程还是java&#xff0c;c之类的。 没有校招&#xff0c;就是要自己去外面面试了…

【刷题日记】8.二分查找

目录 题目链接&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 一、题目介绍 二、思路 左闭右闭区间写法 三、代码 总结 题目链接&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 一、题目介绍 这道题就是基本的二分查找&#xff…

JavaScript面向对象

一、面向过程和面向对象 1、两大编程思想&#xff1a;面向过程和面向对象 面向过程编程&#xff08;OPP&#xff09; 装修房屋的流程&#xff1a; ​ 1.找张三设计&#xff0c;你要给张三提供房屋结构图纸 ​ 2.找李四安装水电&#xff0c;你要给李四买好水管电线 ​ 3.找…

室友打了一把王者我学会了CMake的使用(初学者必备)

CMakeCMake介绍CMake安装以及简单的使用利用CMake生成动静态库链接动静态库CMake介绍 CMake是开源、跨平台的构建工具&#xff0c;可以让我们通过编写简单的配置文件去生成本地的Makefile&#xff0c;这个配置文件是独立于运行平台和编译器的&#xff0c;这样就不用亲自去编写…

web协议-接口测试-Python自动化面试题

1、http和https的区别 http是超文本传输协议&#xff0c;端口是80 https是由SSLhttp协议构成&#xff08;https多了个加密协议&#xff0c;比http更安全&#xff09;&#xff0c;端口是443 2、TCP和UDP的区别 两者都属于传输层协议 TCP是面向连接的&#xff0c;建立TCP需要三…

Mysql主从切换流程

Mysql主从切换流程1.Mysql 版本2.场景3.环境4.切换步骤4.1 切断应用对主库的流量4.2 主库备库设置只读4.3 查看备库复制进程状态4.4 比对主备两边的GTID是否一致4.5 确认是否真正同完4.6 从库停掉复制进程并清空主从信息4.7 从库关闭只读开启读写&#xff0c;转为新主库4.8 主库…

在线反馈,急速解决,移动云视频客服让沟通从此不设限

对于产品而言&#xff0c;用户体验至关重要&#xff0c;而客服的服务质量就是用户体验的“灵魂”。随着移动云多达230全栈产品在云计算市场中的热卖&#xff0c;人们在使用产品中难免也会产生诸多问题&#xff0c;考虑到消费者在与客服沟通时打字描述太繁琐&#xff0c;在线沟通…

九零后程序员心塞:“30岁,月薪还没过万,是我的问题吗”

2020年有职场专家指出&#xff1a; 四千元的月薪&#xff0c;在国内算是中等的薪资水平。 每个月能赚到四千块&#xff0c;就打败了一半的国人&#xff1b; 如果每个月能赚8000~10000&#xff0c;那你就能跑赢90%的国人。 这几个数字是怎么得出来的&#xff1f; 我们可以从两…

上次没砍我的,这次我又来了;看完这篇还不明白 Binder 你砍我

最近一段时间由于工作&#xff0c;接触到 Framework 部分比较多一点&#xff0c;也难免要和 Binder 打一些交道&#xff0c; 因为在 Android 系统中&#xff0c;每一个应用程序都是由一些 Activity 和 Service 组成的&#xff0c;这些 Activity 和 Service 有可能运行在同一个进…

java基于springboot+vue的旅游心得分享攻略系统 elementui

SpringBoot是当前最流向的一个框架&#xff0c;它的配置更加的简单&#xff0c;使开发变得更加的简单迅速。 Spring Boot 的基础结构共三个文件&#xff0c;具体如下&#xff1a; src/main/java&#xff1a;程序开发以及主程序入口&#xff1b; src/main/resources&#xff1a;…

vue serve及其与vue-cli-service serve之间的关系

vue serve及其与vue-cli-service serve之间的关系 目录 vue serve及其与vue-cli-service serve之间的关系 一、前言 二、vue命令 三、package.json的preset预置的配置命令参数 3.1、依赖与开发依赖 3.2、vue/cli-service 的内部 3.3、vue -***命令如何跑起来 四、vue …

HTML篇三——(2)

目录一、HTML常用标签1.5 文本格式化标签1.6 <div> 和<span>标签一、HTML常用标签 标题标签、段落标签、换行标签见&#xff1a;https://editor.csdn.net/md/?articleId126970642 1.5 文本格式化标签 文本格式化标签是为文字设置粗体、斜体以及下划线等效果&am…

有了这个 Python 库,以后再也不用写正则表达式了

正则表达式大家应该有了解过吧&#xff1f;它功能很强大&#xff0c;但有一个痛点就是不太容易读写&#xff0c;我们需要了解正则的很多语法规则才能写出一个健壮的正则表达式&#xff0c;很多朋友估计听到正则表达式估计都焦头烂额了。 就没有解决办法吗&#xff1f; 有的&a…

单播以及多播的书写实验

实验目的&#xff1a; 学习对每个分类单播的理解以及书写 学习对每个分类多播的理解以及书写 实验说明&#xff1a; 通过此实验练习&#xff0c;可以更好的掌握IPv6地址书写以及分类 实验环境&#xff1a; 两台支持SPSERVICES的IOS的路由器 直通线以及串口线 实…

树莓派高级开发之树莓派博通BCM2835芯片手册导读与及“相关IO口驱动代码的编写”

首先我们要知道&#xff0c;驱动的两大利器&#xff1a;电路图&#xff08;通过电路图去寻找寄存器&#xff09;和芯片手册 一、寄存器的介绍 芯片手册第六章的89页&#xff0c;GPIO有41个寄存器&#xff0c;所有访问都是32位的。Description是寄存器的功能描述。GPFSEL0&…

2022年最新《Java八股文面试宝典》全网独一份!(效率最高、知识最新、包含各个技术栈)

今天在脉脉刷到了这么一条消息&#xff0c;现在这个大环境&#xff0c;都后悔学Java了&#xff0c;想转行学前端&#xff0c; 看完很是震惊&#xff0c;据大数据统计&#xff0c;Java的待遇是要好过前端的。小伙伴竟然被卷到想要转行......但是行情这个东西&#xff0c;也不是我…

vue3.x之isRef toRefs isRef readonly 公共数据配置 axios配置 路由配置

isRef toRefs toRef 参数&#xff1a; (源对象 , 源对象属性) 可以用来为源响应式对象上的某个 property 新创建一个 ref。然后&#xff0c;ref 可以被传递&#xff0c;它会保持对其源 property 的响应式连接。 也就是说源响应式对象(toRef的第一个参数) 上的某个 property…

【3D视觉】PointNet解析

您好&#xff0c;各位&#xff01;今天就基于3D点云数据的分类以及分割模型 : PointNet与PointNet做一个简单的解析&#xff0c;解析部分将结合论文与代码&#xff0c;加上一些我个人微不足道&#xff08;也不一定对&#xff09;的见解在里面。 在看PointNet与PointNet之前&am…