近日布置了轮播图的作业,是基于小米官网上的轮播图来做,思路很清楚但是代码不好写

学到的思想:

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">&lt;</div><div class="arrowright arrow">&gt;</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轮播图代码详解相关推荐

  1. bootstrap轮播图代码详解

    最近在做个人简历网站,然后要用到轮播图,上网查了一下,以下为轮播图代码: 下面展示一些 内联代码片. <!-- 轮播(Carousel)项目 --> <div id="my ...

  2. JavaScript轮播图代码

    JavaScript轮播图代码 <html><head><meta charset="utf-8"><title>轮播图</t ...

  3. 制作一个简单的轮播图(详解新手教学)

    制作一个简单的轮播图(详解新手教学) 相信很多初学者,无论是前端还是后端,对于制作页面时,都想自己亲手制作一个轮播图. 如何制作一个轮播图: 基础知识:有HTML,Css,js基础 本文使用技术: H ...

  4. js原生 JavaScript轮播图【渐变淡入淡出】效果实现(附代码)

    目录 前言 轮播图的组成以及实现思想 左右按钮的隐藏与显示 核心思想 代码实现 动态生成底部小圆圈 核心思想 代码实现 右左按钮实现 核心思想 代码实现 实现自动播放 核心思想 代码实现 整体代码(复 ...

  5. Vue.js轮播图走马灯 (详解)

    直接上代码: 轮播图1: html <template><div><div class="back_add"><div class=&qu ...

  6. jQuery无缝轮播图思路详解-唯品会

    效果图如上: 需求:图片自动轮播,鼠标移上停止播放,离开恢复播放,箭头切换图片. html代码 <!--轮播图大盒子开始--> <div class="wrap" ...

  7. js轮播图代码_javascript基础(一)——轮播图

    javascript基础(一)--轮播图 1.轮播图的实现原理 轮播图的js实现原理其实十分的简单,首先将图片放入一个ul标签中,ul标签的大小要足够将所有图片放入其中.然后再将ul标签放进div中, ...

  8. javaScript小案例------js实现无缝轮播图效果篇

    原生js书写无缝轮播图 javaScript无缝轮播图思路及源码 无缝轮播图效果 总体思路 下面附上代码: html css animate.js index.js javaScript无缝轮播图思路 ...

  9. 原生js进阶版轮播图实现(走马灯效果,无缝衔接)

    原生js进阶版轮播图实现(走马灯效果,无缝衔接) 利用原生js手写一个轮播图,是上一篇文章的简易版的一个进阶,本次轮播图主要是利用定位和定时器实现了走马灯效果,并且是左右轮播.实现过程与代码也是很简单 ...

  10. 图片竖轮播html,JS实现纵向轮播图(初级版)

    本文实例为大家分享了JS实现纵向轮播图的具体代码,供大家参考,具体内容如下 描述: 纵向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉),核心知识是数据驱动图像的透明度 ...

最新文章

  1. R包vegan的Mantel tests探索群落物种组成是否与环境相关
  2. Eclipse编译运行Native代码步骤详解
  3. 现在不使用ZeroClipboard我们也能实现复制功能(转)
  4. [BZOJ1026] [SCOI2009] windy数 (数位dp)
  5. 【转】js日期时间函数
  6. Unicode 编码解码
  7. mysql的varchar与text对比
  8. 线性同余法产生随机数C语言,使用线性同余法生成伪随机数/序列(C++实现)
  9. macbook 打开多个终端
  10. 入职要求提供上家公司的工资银行流水?
  11. 【暴力破解】medusacrowbar工具
  12. 那些“死掉”的超链接,是如何被灰产占用的
  13. python 头条新闻机器人_使用今日头条web版API实现的头条机器人
  14. Bryntum Gantt 5.0 JS
  15. Adb shell命令直接打开语言设置界面
  16. 【Unity 22】 Unity 力,扭矩,刚体,触发器的简单使用
  17. PYNQ-z2的学习过程
  18. 2021记录阿里云虚拟专用服务器的初使用
  19. java jodd框架介绍及使用示例
  20. 面向对象之唐城NBA选秀大会

热门文章

  1. usb不能识别的解决方案
  2. 写了一个快速阅读训练的小软件
  3. 研究生论文排版工具:LaTeX
  4. 黑猫论坛实战免杀教程
  5. RecyclerView 实现多种布局(上半部Gridview样式,下半部Listview样式)以及多种数据类型实现不同布局
  6. vi打开GBK编码文件乱码问题
  7. 用计算机算出手机机主的名字,号码归属地查询及姓名?电话号码查询机主姓名?输入手机号知道机主?手机号码归属地查询姓名...
  8. 在IntelliJ IDEA中使用 JAVAFX 过程记录
  9. CWMP\TR069协议学习随笔1——入门基础知识及环境搭建
  10. 毫米波雷达及其应用精炼介绍