位置: IT常识 - 正文

JS实战——轮播图(js轮播图实现思路)

编辑:rootadmin
JS实战——轮播图

目录

一、轮播图介绍

 二、原理

三、轮播图基本htm布局

四、轮播图CSS布局

五、轮播图JS布局

六、轮播图效果


一、轮播图介绍

推荐整理分享JS实战——轮播图(js轮播图实现思路),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js轮播图菜鸟教程,js中轮播图应该怎么写,js怎么实现轮播,js轮播图视频教程,js简单轮播,js轮播图视频教程,js轮播图实现简单代码,js实现轮播图效果,内容如对您有帮助,希望把文章链接给更多的朋友!

       现在我们在很多网站上都能看到轮播图,像某东、某宝、某猫等等大小型网站上都有应用。下面就是某宝上的轮播图样式。

 二、原理

  将一些图片在一行中平铺,然后计算偏移量再利用定时器实现定时轮播。

三、轮播图基本htm布局

       主要就是创建一个大盒子里面存放轮播图的图片标签,cicle标签下的div主要是为后期存放实现图片轮播下面的小圆点。

<div class="banner"><ul class="imgList"><li><img src="../1.png" alt=""></li><li><img src="../2.jpg" alt=""></li><li><img src="../3.jpg" alt=""></li><li><img src="../4.jpg" alt=""></li></ul><div class="circle"> </div></div>四、轮播图CSS布局JS实战——轮播图(js轮播图实现思路)

        定义全局,消除页面对我们创建CSS布局时的影响。布局全局样式,消除li标签自带小黑点使用定位消除高度塌陷。

* {margin: 0px;padding: 0px;}.banner {width: 600px;margin: auto;border: 10px solid greenyellow;height: 350px;position: relative;overflow: hidden;}.imgList {list-style: none;/* width: 2480px; */position: absolute;/* left:-620px; */}

           设置图片大小,让图片在我们之前设置的边框里。

.imgList img {width: 600px;height: 350px;}.imgList li {float: left;margin-right: 20px;}

        定义a标签,生成点击小圆点,产生点击前后效果对比样式。

.circle {position: absolute;bottom: 15px;left: 50%;transform: translateX(-50%);} .circle a {width: 15px;height: 15px;background: yellow;display: block;border-radius: 50%;opacity: .5;float: left;margin-right: 5px;cursor: pointer;}.circle a.hover {background: black;opacity: .8;}五、轮播图JS布局

         首先先获取元素,给父类设置整个图片的宽度,并利用设置好的CSS样式创建底部小圆点。

window.onload = function () {var imgList = document.querySelector('.imgList');var circle = document.querySelector('.circle');var thisIndex = 0;var imgListLi = imgList.children;var circleA = circle.children;var flag = true;imgList.style.width = imgList.children.length * 620 + 'px';for (var i = 0; i < imgList.children.length; i++) {var aNode = document.createElement('a');aNode.setAttribute('index', i);//设置自定义属性if (i == 0) {aNode.className = 'hover';}circle.appendChild(aNode);}

         设置监听器为点击按钮实现图片的移动,并用获取元素的方法解决点击圆点附近区域跳转的bug事件。

circle.addEventListener('click', function (e) {if (flag) {flag = false;// console.log(e.target);if (e.target.nodeName != 'A') {return false;}thisIndex = e.target.getAttribute('index');// imgList.style.left = -thisIndex * 620 + 'px';slow(imgList, -thisIndex * 620, function () {flag = true;});circleChange();}})

         利用函数和节流阀解决图片在跳转到最后一张图片无法返回第一张图片的问题,节流阀用来解决图片移动出现左右抖动横跳现象,并设置了图片自动播放功能。

function antoChange() {setInterval(function () {if (flag) {flag = false;if (thisIndex >= circleA.length) {thisIndex = 0;}slow(imgList, -thisIndex * 620, function () {flag = true;});circleChange();thisIndex++;}}, 3000);}

        剩下主要用来解决图片左右移动速度和图片移动同时图片下方小圆点同步移动,以及移动过程中小圆点样式的变化。

function circleChange() {for (var i = 0; i < circleA.length; i++) {circleA[i].className = '';}circleA[thisIndex].className = 'hover';}function slow(obj, target, callback) {obj.myInter = setInterval(function () {var offsetLeft = obj.offsetLeft;var num = (target - offsetLeft) / 10;num > 0 ? num = Math.ceil(num) : num = Math.floor(num);if (offsetLeft == target) {clearInterval(obj.myInter);callback && callback();} else {obj.style.left = offsetLeft + num + 'px';}}, 10)}antoChange();}六、轮播图效果

七、完整代码<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>轮播图</title><!-- <link rel="stylesheet" href="style.css"> --><style>* {margin: 0px;padding: 0px;}.banner {width: 600px;margin: auto;border: 10px solid greenyellow;height: 350px;position: relative;overflow: hidden;}.imgList {list-style: none;/* width: 2480px; */position: absolute;/* left:-620px; */}.imgList img {width: 600px;height: 350px;}.imgList li {float: left;margin-right: 20px;}.circle {position: absolute;bottom: 15px;left: 50%;transform: translateX(-50%);}.circle a {width: 15px;height: 15px;background: yellow;display: block;border-radius: 50%;opacity: .5;float: left;margin-right: 5px;cursor: pointer;}.circle a.hover {background: black;opacity: .8;}</style></head><body><div class="banner"><ul class="imgList"><li><img src="../1.png" alt=""></li><li><img src="../2.jpg" alt=""></li><li><img src="../3.jpg" alt=""></li><li><img src="../4.jpg" alt=""></li></ul><div class="circle"><!-- <a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a> --></div></div><script>window.onload = function () {var imgList = document.querySelector('.imgList');var circle = document.querySelector('.circle');var thisIndex = 0;var imgListLi = imgList.children;var circleA = circle.children;var flag = true;imgList.style.width = imgList.children.length * 620 + 'px';for (var i = 0; i < imgList.children.length; i++) {var aNode = document.createElement('a');aNode.setAttribute('index', i);//设置自定义属性if (i == 0) {aNode.className = 'hover';}circle.appendChild(aNode);}circle.addEventListener('click', function (e) {if (flag) {flag = false;// console.log(e.target);if (e.target.nodeName != 'A') {return false;}thisIndex = e.target.getAttribute('index');// imgList.style.left = -thisIndex * 620 + 'px';slow(imgList, -thisIndex * 620, function () {flag = true;});circleChange();}})function antoChange() {setInterval(function () {if (flag) {flag = false;if (thisIndex >= circleA.length) {thisIndex = 0;}slow(imgList, -thisIndex * 620, function () {flag = true;});circleChange();thisIndex++;}}, 3000);}function circleChange() {for (var i = 0; i < circleA.length; i++) {circleA[i].className = '';}circleA[thisIndex].className = 'hover';}function slow(obj, target, callback) {obj.myInter = setInterval(function () {var offsetLeft = obj.offsetLeft;var num = (target - offsetLeft) / 10;num > 0 ? num = Math.ceil(num) : num = Math.floor(num);if (offsetLeft == target) {clearInterval(obj.myInter);callback && callback();} else {obj.style.left = offsetLeft + num + 'px';}}, 10)}antoChange();}</script></body></html>
本文链接地址:https://www.jiuchutong.com/zhishi/299004.html 转载请保留说明!

上一篇:基于深度学习的图像超分辨率——综述

下一篇:聊聊关于图像分割的损失函数 - BCEWithLogitsLoss(图像可以分成哪些类别?)

  • 优酷怎么分享影视作品给好友(优酷怎么分享影片)

    优酷怎么分享影视作品给好友(优酷怎么分享影片)

  • 夸克账号怎么退出登录(夸克会员怎么退订)

    夸克账号怎么退出登录(夸克会员怎么退订)

  • 淘特怎么用微信零钱直接付款(淘特怎么用微信支付)

    淘特怎么用微信零钱直接付款(淘特怎么用微信支付)

  • vivos12后盖材质(vivos5手机后盖是什么材质)

    vivos12后盖材质(vivos5手机后盖是什么材质)

  • 微信怎么设置特定人搜索不到(微信怎么设置特别关心消息提醒)

    微信怎么设置特定人搜索不到(微信怎么设置特别关心消息提醒)

  • 没信号能打110吗(没信号时能打110吗)

    没信号能打110吗(没信号时能打110吗)

  • ipad有低电量模式吗(ipad2018低电量模式)

    ipad有低电量模式吗(ipad2018低电量模式)

  • 设计表要定义哪些内容(设计表的结构要考虑哪些问题)

    设计表要定义哪些内容(设计表的结构要考虑哪些问题)

  • 微信联系人可以分组吗(微信联系人可以批量删除吗)

    微信联系人可以分组吗(微信联系人可以批量删除吗)

  • 苹果x哪年在中国上市(苹果X哪年在中国上市的)

    苹果x哪年在中国上市(苹果X哪年在中国上市的)

  • 笔记本可以外接键盘吗(笔记本可以外接摄像头吗)

    笔记本可以外接键盘吗(笔记本可以外接摄像头吗)

  • 如何发布抖音视频(如何发布抖音视频到微信朋友圈)

    如何发布抖音视频(如何发布抖音视频到微信朋友圈)

  • 数据的四种存储结构(数据的四种存储结构是指)

    数据的四种存储结构(数据的四种存储结构是指)

  • 苹果11音量键自己跳出来(苹果11音量键自动跳)

    苹果11音量键自己跳出来(苹果11音量键自动跳)

  • 电子保修卡激活啥意思(电子保修卡激活后可以撤回吗)

    电子保修卡激活啥意思(电子保修卡激活后可以撤回吗)

  • 怎么看自己系统是win多少(怎么看自己系统的密钥)

    怎么看自己系统是win多少(怎么看自己系统的密钥)

  • ipad可以打电话吗(苹果哪款ipad可以打电话)

    ipad可以打电话吗(苹果哪款ipad可以打电话)

  • 苹果x和xs区别(苹果x和xs区别大不大)

    苹果x和xs区别(苹果x和xs区别大不大)

  • 微信怎么看聊天记录(微信怎么看聊天记录占的内存)

    微信怎么看聊天记录(微信怎么看聊天记录占的内存)

  • 怎么从qq收藏加回好友(怎么从qq收藏里添加好友)

    怎么从qq收藏加回好友(怎么从qq收藏里添加好友)

  • wps为什么是金山文档(wps为什么是金山文档小程序)

    wps为什么是金山文档(wps为什么是金山文档小程序)

  • 在电脑中设置一个提醒闹钟(在电脑中设置一键换机)

    在电脑中设置一个提醒闹钟(在电脑中设置一键换机)

  • vue2 ElementUI 表单标签、表格表头添加问号图标提示(element-ui表格)

    vue2 ElementUI 表单标签、表格表头添加问号图标提示(element-ui表格)

  • Vue中,一个组件调用其他组件的方法(非父子组件)(vue中的组件)

    Vue中,一个组件调用其他组件的方法(非父子组件)(vue中的组件)

  • whatis命令  查询命令执行功能(查询命令的操作步骤)

    whatis命令 查询命令执行功能(查询命令的操作步骤)

  • java类型推断如何理解(java 类型推导)

    java类型推断如何理解(java 类型推导)

  • 施工项目预缴税率是多少
  • 多缴纳了印花税有什么影响
  • 合同解除的效力民法典
  • 出差补贴计入
  • 公司端午礼盒
  • 股权转让时的资金是什么
  • 合伙企业的合伙协议
  • 资产减值损失借贷方向
  • 受托代为投资账务处理
  • 电子承兑银行承兑
  • 公司筹建期间
  • 传媒公司发传单
  • 建筑业分项目核算会计账务处理
  • 二手设备进口海关
  • 原材料盘盈审批后冲减
  • 审计人员的差旅费放在哪核算
  • 预缴增值税税款网上申报操作流程
  • 个体工商户有公户吗?
  • 增值税普通发票税率
  • 小规模纳税人没有收入怎么报税
  • 公司股票卖出会计处理
  • 企业接受大额捐赠,可以分次确认收入缴纳企业所得税吗?
  • 增值税专用发票怎么开
  • 消费税的征收范围
  • 公司聚餐一定要去吗
  • 怎么区分汇总原始凭证与累计原始凭证?
  • 补缴的增值税可以计入以前年度损益调整
  • 发票红冲作废是什么意思
  • 税前金额是不含税金额
  • 外出经营地预交税金归主管税务所管吗
  • 滞留海关发票是谁开
  • 供应商质量扣款通知单
  • 个税系统人员信息一直在验证中
  • 个体户个人所得税免征额是多少
  • php常用扩展有哪些
  • 企业购买银行理财
  • 来料加工报废产品合同
  • php使用内置函数的过程
  • synaudsrv.exe是什么
  • 在建工程减值准备
  • 两只小北极熊
  • vue cannot set property
  • html如何导入excel
  • vue动态路由是什么
  • 自查补缴增值税附表一怎么填写
  • 应征增值税不含税销售额是什么
  • php运行乱码怎么办
  • mysql如何判断日期是周末
  • 汽车保险合同由什么组成
  • 申报高新企业的好处
  • 合伙企业需要申报哪些税
  • sql server基本
  • 医疗器械和医疗耗材是一回事吗
  • 什么情况下需要做心脏造影
  • 劳动报酬收入包含什么
  • 长期股权投资成本法转权益法的处理
  • 专票要写开户行和账号
  • 初级会计实务中第二章第四节存货(5)费琪
  • 设备维修费可以抵扣进项税吗
  • 支付给个人的佣金没有发票
  • 实收资本未实缴是否罚款
  • 三栏式明细账目录表
  • 工程已完工未开发票确认收入吗
  • 访问和更改关系的区别
  • Windows系统通过注册表实现打开CMD并定位到指定文件夹
  • winxp开机黑屏只有光标
  • win8任务管理器灰色
  • win7系统电脑开不了机怎么办
  • opencvsharp读取图片
  • 原生js怎么获取input值
  • 攻击判定是什么意思
  • js引入css文件
  • Python+Wordpress制作小说站
  • mailto的使用技巧分享
  • js选中文字
  • js中alert怎么用
  • 如何查询发票代码和发票号码
  • 出口之后必须办什么手续
  • 个体户不用开发票只纳税和记账的话还会罚款吗?
  • 劳务报酬预缴税率表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设