位置: 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(图像可以分成哪些类别?)

  • 如何理解递延所得税资产和递延所得税负债
  • 材料入库的会计分录材料采购损失
  • 提供咨询服务的小规模企业是一般纳税人吗
  • 公司买车可以抵扣哪些税
  • 土增税清算时统借统还利息能否据实扣除
  • 企业重组个人股东个人所得税
  • 费用票据包括哪些
  • 冲销成本结转需要什么凭证
  • 税控盘减免税有时间限制吗?
  • 专项科研经费
  • 对方承担税差该如何入账?
  • 苗木发票抵扣公式
  • 企业发生的借款费用,可直接归属于
  • 投资收益账户月末结转余额吗?
  • 公司发实物要交税吗
  • 补缴的以前年度的税费及滞纳金用更正申报企业所得税吗
  • 营改增后一般纳税人动产租赁税率
  • 营改增之前
  • 按适用税率计税销售额是什么意思
  • 房产税发票可以抵扣吗
  • 企业微信收款的钱怎么提取出来
  • 小规模纳税人一个月能开多少税票
  • 测量仪器进工程成本的什么科目?
  • safari浏览器开发者模式
  • 工程筹建期间发票怎么开
  • ubuntu系统u盘安装
  • linux sed 行尾
  • 所得税季度预缴怎么算
  • 企业财务管理内部控制问题与应对策略
  • php管理员和用户登录
  • 销项税的分录怎么做
  • vue-nginx刷新404问题
  • 库存现金盘亏盘盈
  • 工业企业采购流程
  • 研发支出的相关理论基础有哪些
  • 含消费税的商品开成了不含消费税怎么办
  • 刘亦菲生日当天发素颜照
  • 公司对自己内部的要求
  • 桥接模式例题
  • 一个简单的后台与数据库交互的登录与注册[sql注入处理、以及MD5加密]
  • 发票开预付卡充值可以计入费用吗
  • 自查补税行为有哪些方面
  • 用友t3财务软件价格表
  • 个人所得税0申报什么意思
  • sql server中的编程语言
  • 通货膨胀率怎么求
  • 企业消费税应计入资产成本的有哪些
  • 服务费可以计入主营业务成本吗
  • 企业给员工交公积金怎么办理
  • 跨年的管理费用可以直接冲吗
  • 永续债利息可以抵税吗
  • 盈余公积的会计分录
  • 航天税盘服务费分录
  • 购买药材的发票如何抵扣?
  • 工会经费交纳
  • 采用补偿贸易方式的是
  • 忘记MySQL的root密码该怎么办
  • sql作业怎么执行
  • 存储过程怎么理解
  • win8系统如何激活
  • centosgui
  • bios的含义
  • 如何在苹果电脑上下载软件
  • 苹果电脑怎么打开u盘
  • unable to boot - please use a kernel appropriate for your cpu的解决方法
  • linuxwho
  • linux rpm解压
  • perl脚本调试方法
  • jQuery javascript获得网页的高度与宽度的实现代码
  • 你可能不知道的湖北
  • easyui formatter
  • bootstrap需要学多久
  • 2022年最新最全执业药师继续教育考试答案
  • 发票汇总表怎么计算
  • 武汉电子税务局申领发票以后如何自取
  • 担保费属于什么服务
  • 南京地税局局长名单
  • 安置房公摊面积多少属于正常范围
  • 公司汽车用油计入什么科目
  • 长沙房产税如何征收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设