【JS基础】JavaScript轮播图代码详解
近日布置了轮播图的作业,是基于小米官网上的轮播图来做,思路很清楚但是代码不好写
学到的思想:
1,封装函数,减少代码量,也更清楚每一步做的东西
2,声明需注意,所有Elements的都是输出数组,若需要具体的必须加下标,id是一对一不需要下标。
思路:
1,东西:一大盒子居中 一个盒子放图 两个箭头游离 一ul的点点
2,放图盒子大小设置有道道 放图盒子里面ul ulflex 根据index移动marginLeft即可
3,要实现的效果:
- 点击点点 对应图片出现
- 点击左右箭头,可以切换左右图片
- 箭头 鼠标在上样式变化 鼠标下来样式回去
- 图片盒子 鼠标在上停止轮播 鼠标出来轮播继续
4,需要写的函数:
- 索引变化并利用索引动marginLeft变得到图片变得效果 用在轮播动时需要索引,因点点动时需要索引,因箭头动时需要索引
- 轮播图计时器
- 轮播图停止函数
- 消除一些样式的函数 样式回去的函数
HTML:
<div id="sec"><div class="box"><ul><img src="./img/img1.webp" alt=""><img src="./img/img2.webp" alt=""><img src="./img/img3.webp" alt=""><img src="./img/img4.webp" alt=""><img src="./img/img5.jpg" alt=""></ul><div class="arrowleft arrow"><</div><div class="arrowright arrow">></div><div class="dot"><ul><li class="active"></li><li></li><li></li><li></li><li></li></ul></div></div></div>
css样式:
*{margin: 0;padding: 0;}ul li{list-style: none;}body{background-color: aliceblue;}#sec{width: 1226px;height: 460px;margin: 0 auto;background-color: antiquewhite;position: relative;}.arrow{width: 50px;height: 70px;line-height: 70px;color: #565656;top: 165px;font-size: 50px;position: absolute;}.arrowover{width: 50px;height: 70px;line-height: 70px;color: white;top: 165px;font-size: 50px;position: absolute;background-color: #565656;}.arrowright{right: 0;width: 50px;height: 70px;line-height: 70px;color: #565656;top: 165px;font-size: 50px;position: absolute;}.box{width: 100%;height: 460px;overflow: hidden;}.box>ul{width: 500%;height: 100%;overflow: hidden;display: flex;background-size: 100% 100%;}.dot{width: 20%;height: 200px;position: absolute;right: 50px;top: 420px;}.dot ul{display: flex;justify-content: space-around;}.dot ul li{width: 15px;height: 15px;border-radius: 50%;background-color: #3e3d3f;border: 1px #9e9e9e;}.active{width: 15px;height: 15px;border-radius: 50%;border: 1px #9e9e9e;background-color: #9e9e9e;}
js:
首先写上window.οnlοad=function(){(我习惯js写在head里)
声明所有东西
//还是那句话,记得加[]下标哦~var box=document.getElementsByClassName('box')[0]var arrowleft=document.getElementsByClassName('arrowleft')[0]var arrowright=document.getElementsByClassName('arrowright')[0]var bot=document.getElementsByTagName('li')//索引的声明 名字不重要 但是他贯穿整个代码实现var index = 0;//这个小操作很实用,是选取的dot盒子里面的所有li标签的东西的集合let lis = document.querySelector('.dot').querySelectorAll('li')var ul=document.getElementsByTagName('ul')[0]console.log(ul)//测试var wrapWidth=document.getElementsByClassName('box')[0].clientWidthconsole.log(wrapWidth)//测试
函数部分
//往往需要改好多会,测试很多会,才能封装成函数
// 索引变化 可以用在轮播图动时,带动点点的变化,带动图片的变化function setIndex(){if(index<0){index=lis.length-1}if(index>lis.length-1){index=0}//这两个判断很重要,但对我来说又是很难,唉~//轮播图布局的方法-按照index往左右移动ul.style.marginLeft=- wrapWidth*index+'px'}// 计时器开始function start(){timer=setInterval(function(){index++setIndex()//大胆调用函数 加油cleardiv()lis[index].className = 'active'},1000)//计时器的格式请记牢,timer(随便什么名字)=setInterval(functiion(){},1000)}}// 计时器关闭function stop(){clearInterval(timer)//这小函数记住}// 消除之前的一些样式的function cleardiv() {for(let count = 0; count < lis.length; count ++) {lis[count].className = '';}//这小循环对我来说很难,很绕,再多练一下。}
开始写鼠标事件
左右箭头 点击事件
左右箭头 鼠标入鼠标出
点点 点击 好几个点点所以需要for循环lis数组的下标[]
图片盒子 鼠标入鼠标出 控制轮播
// 点击左右箭头 图片变化&&点点变化arrowleft.onclick=function(){index--setIndex()cleardiv()lis[index].className = 'active'}arrowright.onclick=function(){index++setIndex()cleardiv()lis[index].className = 'active'}// 鼠标浮在左右箭头上 箭头样式变化arrowleft.onmouseenter = function() {arrowleft.style.cssText = 'color:#8d8d8d;background-color: dimgrey;'}arrowleft.onmouseleave = function() {arrowleft.style.cssText = ''arrowleft.style.color = '#565656'}arrowright.onmouseenter = function() {arrowright.style.cssText = 'color:#8d8d8d;background-color: dimgrey;'}arrowright.onmouseleave = function() {arrowright.style.cssText = ''arrowright.style.color = '#565656'}// 点击点点 图片变化for(let i=0;i<lis.length;i++){lis[i].onclick=function(){index=IsetIndex()cleardiv()lis[index].className = 'active'}}// 鼠标不在上面时,轮播起来,鼠标不在上面,不再轮播start()box.onmouseleave=function(){start()}box.onmouseover=function(){stop()}
这样轮播图的效果就完成了
这次主要是练习js的函数使用和循环的使用。
视频效果的视频在csdn上传上了。有需要的可以下载参考。
【JS基础】JavaScript轮播图代码详解相关推荐
- bootstrap轮播图代码详解
最近在做个人简历网站,然后要用到轮播图,上网查了一下,以下为轮播图代码: 下面展示一些 内联代码片. <!-- 轮播(Carousel)项目 --> <div id="my ...
- JavaScript轮播图代码
JavaScript轮播图代码 <html><head><meta charset="utf-8"><title>轮播图</t ...
- 制作一个简单的轮播图(详解新手教学)
制作一个简单的轮播图(详解新手教学) 相信很多初学者,无论是前端还是后端,对于制作页面时,都想自己亲手制作一个轮播图. 如何制作一个轮播图: 基础知识:有HTML,Css,js基础 本文使用技术: H ...
- js原生 JavaScript轮播图【渐变淡入淡出】效果实现(附代码)
目录 前言 轮播图的组成以及实现思想 左右按钮的隐藏与显示 核心思想 代码实现 动态生成底部小圆圈 核心思想 代码实现 右左按钮实现 核心思想 代码实现 实现自动播放 核心思想 代码实现 整体代码(复 ...
- Vue.js轮播图走马灯 (详解)
直接上代码: 轮播图1: html <template><div><div class="back_add"><div class=&qu ...
- jQuery无缝轮播图思路详解-唯品会
效果图如上: 需求:图片自动轮播,鼠标移上停止播放,离开恢复播放,箭头切换图片. html代码 <!--轮播图大盒子开始--> <div class="wrap" ...
- js轮播图代码_javascript基础(一)——轮播图
javascript基础(一)--轮播图 1.轮播图的实现原理 轮播图的js实现原理其实十分的简单,首先将图片放入一个ul标签中,ul标签的大小要足够将所有图片放入其中.然后再将ul标签放进div中, ...
- javaScript小案例------js实现无缝轮播图效果篇
原生js书写无缝轮播图 javaScript无缝轮播图思路及源码 无缝轮播图效果 总体思路 下面附上代码: html css animate.js index.js javaScript无缝轮播图思路 ...
- 原生js进阶版轮播图实现(走马灯效果,无缝衔接)
原生js进阶版轮播图实现(走马灯效果,无缝衔接) 利用原生js手写一个轮播图,是上一篇文章的简易版的一个进阶,本次轮播图主要是利用定位和定时器实现了走马灯效果,并且是左右轮播.实现过程与代码也是很简单 ...
- 图片竖轮播html,JS实现纵向轮播图(初级版)
本文实例为大家分享了JS实现纵向轮播图的具体代码,供大家参考,具体内容如下 描述: 纵向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉),核心知识是数据驱动图像的透明度 ...
最新文章
- R包vegan的Mantel tests探索群落物种组成是否与环境相关
- Eclipse编译运行Native代码步骤详解
- 现在不使用ZeroClipboard我们也能实现复制功能(转)
- [BZOJ1026] [SCOI2009] windy数 (数位dp)
- 【转】js日期时间函数
- Unicode 编码解码
- mysql的varchar与text对比
- 线性同余法产生随机数C语言,使用线性同余法生成伪随机数/序列(C++实现)
- macbook 打开多个终端
- 入职要求提供上家公司的工资银行流水?
- 【暴力破解】medusacrowbar工具
- 那些“死掉”的超链接,是如何被灰产占用的
- python 头条新闻机器人_使用今日头条web版API实现的头条机器人
- Bryntum Gantt 5.0 JS
- Adb shell命令直接打开语言设置界面
- 【Unity 22】 Unity 力,扭矩,刚体,触发器的简单使用
- PYNQ-z2的学习过程
- 2021记录阿里云虚拟专用服务器的初使用
- java jodd框架介绍及使用示例
- 面向对象之唐城NBA选秀大会
热门文章
- usb不能识别的解决方案
- 写了一个快速阅读训练的小软件
- 研究生论文排版工具:LaTeX
- 黑猫论坛实战免杀教程
- RecyclerView 实现多种布局(上半部Gridview样式,下半部Listview样式)以及多种数据类型实现不同布局
- vi打开GBK编码文件乱码问题
- 用计算机算出手机机主的名字,号码归属地查询及姓名?电话号码查询机主姓名?输入手机号知道机主?手机号码归属地查询姓名...
- 在IntelliJ IDEA中使用 JAVAFX 过程记录
- CWMP\TR069协议学习随笔1——入门基础知识及环境搭建
- 毫米波雷达及其应用精炼介绍