最新原生js轮播图案列,很简单几个步骤

1.导入html结构,结构大家都会写哦,我就展示一下,图片有些尺寸没有对上,变形很正常的,可以给几个不同颜色的盒子用来实验都可以的。

html代码

 <div class="box"><div class="heid">   <a href="javascript:;" class="left"> &lt; </a><a href="javascript:;" class="rigth">&gt;</a><ul class="ul_wiht">  // 用来移动的ul<li><a href="javascript:;"><img src="./lunbotu.img/10.jpg" alt=""></a></li><li><a href="javascript:;"><img src="./lunbotu.img/11.jpg" alt=""></a></li><li><a href="javascript:;"><img src="./lunbotu.img/12.jpg" alt=""></a></li><li><a href="javascript:;"><img src="./lunbotu.img/13.jpg" alt=""></a></li><li><a href="javascript:;"><img src="./lunbotu.img/16.jpg" alt=""></a></li><li><a href="javascript:;"><img src="./lunbotu.img/10.jpg" alt=""></a></li></ul><ol class="yuanq"><li class="baise"></li><li></li><li></li><li></li><li></li></ol></div></div>

2.css样式写的有点多,可以自己写的简单点,我写了这么多的css样式,看的有点头晕,ctrl+c ctrl+v 一把唆,哈哈哈

 <style>* {margin: 0;padding: 0;}li {list-style: none;}a {text-decoration: none;}.box {width: 700px;height: 300px;background-color: pink;margin: 100px auto;}.heid {position: relative;width: 700px;height: 300px;overflow: hidden;}.heid .ul_wiht {position: absolute;left: 0;top: 0px;width: 4220px;}.heid .ul_wiht li {float: left;width: 700px;height: 300px;}.heid li img {display: block;width: 100%;height: 100%;}.heid>a {display: none;position: absolute;width: 30px;height: 50px;background-color: #fff;text-align: center;line-height: 50px;font-size: 20px;opacity: .5;z-index: 99;color: #000;}.heid .left {top: 50%;left: 0;margin-top: -10px;}.heid .rigth {right: 0;top: 50%;margin-top: -10px;}.heid .yuanq {position: absolute;left: 50%;bottom: 10px;margin-left: -70px;}.heid .yuanq li {float: left;width: 15px;height: 15px;background-color: skyblue;margin-right: 5px;border-radius: 50%;cursor: pointer;opacity: .6;}.yuanq li.baise {background-color: #fff;opacity: 1;}.hezi {width: 100px;height: 100px;background-color: #000;}

3.开始写上 js代码了
应该先写一个匀速的动画函数封装,然后调用就很好用了

 // 封装一个匀速动画function anmiate(obj, distance, cllibarck) {clearInterval(obj.timea)   // 进去先清除定时器// 给事件的对象创建计时器obj.timea = setInterval(function () {let current = obj.offsetLeft  // 声明一个变量,把传进来的对象元素的宽度赋值给变量let juli = distance - current  // 算出一个总距离(distance) - 对象宽度let yunshu = juli / 10  //  除以10就是每次要走多少距离yunshu = yunshu > 0 ? Math.ceil(yunshu) : Math.floor(yunshu)  // 向上或者向下取整current += yunshu  // 每次++走多少距离份数obj.style.left = current + 'px'   // 赋值(记得要加单位哦)// 判断走完路程没有if (current == distance) {   clearInterval(obj.timea)// 判断第三个是不是函数,以免封装的动画函数传进去不对会报错if (cllibarck instanceof Function) {cllibarck()}}}, 30)}
  • 3.1.第一步骤: 先给左右按钮设置 鼠标移入moueseover && 移开mouseout 的事件
  • 3.2.第二步骤: 移入后让两个按钮显示出来 display = block 移除就是 display = none
  • 3.3.第三步骤:点击哪个小圆圈就让哪个小圆圈有高亮效果,就要用到排他for循环来做了
  • 3.4.第四步骤:排他思想完之后用动画函数进行调用
  • 3.5.第五步骤:先声明一个index用于存放点击次数,给点击右边的按钮做动画事件,如果点击到了最后一张,把index设置为0,ul移动的盒子left也要设置回到原来的位置是 0 ,调用动画函数
  • 3.6.第六步骤:点击按钮右效果了开始设置小圆圈高亮效果,循环for排空,判断点击 ==最后一张的话就把索引号0设置 添加高亮类名,否则小圆圈跟着index点击走
  • 3.7.做完右边点击效果后有个小bug,连续点击就会一直变快,需要设置一个节流阀哦,允许一个函数在规定的时间内只执行一次,动画结束才可以打开。左边按钮也 是一样的操作哦,
  • 3.8:第七步骤:应该给向右做自动滚动效果,先把右按钮的里面的参数封装,点击右按钮的时候就调用这个函数,然后设置计时器
  • 3.9:第八步骤:别忘了给鼠标移入那里清除计时器,移除就开启计时器哦

js代码,写的有点多,有更好的代码。大佬们可以推荐哈

// 轮播图开始let heid = document.querySelector('.heid')let al = document.querySelector('.left')let ar = document.querySelector('.rigth')let blockxs = document.querySelector('.blockxs')let list = document.querySelectorAll('.yuanq li')let ullist = document.querySelectorAll('.ul_wiht>li')let ul = document.querySelector('.ul_wiht')heid.onmouseover = function () {al.style.display = 'block'ar.style.display = 'block'clearInterval(timel)}heid.onmouseout = function () {al.style.display = 'none'ar.style.display = 'none'timel = setInterval(automatic, 1000)}// 点击小圆圈for (let i = 0; i < list.length; i++) {list[i].onclick = function () {for (let j = 0; j < list.length; j++) {list[j].className = ''}this.className = 'baise'anmiate(ul, -i * heid.offsetWidth)// index = i}}let index = 0 // 定义一个li的索引let fage = true // 定义一个节阀流,每点击一个只触发一次事件// 右边点击的按钮ar.addEventListener('click', function () {automatic()})function automatic() {if (fage) {fage = falseif (index == ullist.length - 1) {index = 0ul.style.left = 0}index++anmiate(ul, -index * heid.offsetWidth, function () {fage = true // 动画结束就打开})// 设置小圆圈跟随图片for (let i = 0; i < list.length; i++) {list[i].className = ''}if (index == ullist.length - 1) {list[0].className = 'baise'} else {list[index].className = 'baise'}}}let timel = setInterval(automatic, 1000) // 设置自动滚动// 左边点击的按钮al.addEventListener('click', function () {if (fage) {fage = falseif (index == 0) {index = ullist.length - 1ul.style.left = -index * heid.offsetWidth + 'px'}index--anmiate(ul, -index * heid.offsetWidth, function () {fage = true // 动画结束就打开})for (let i = 0; i < list.length; i++) {list[i].className = ''}list[index].className = 'baise'}})

看起来轮播图点几下,自动滚几下,做起来简直哈哈哈哈哈-.-,有大佬也可以分享哦,

最新原生js轮播图案列相关推荐

  1. 原生JS轮播图的知识点梳理

    JS轮播图的梳理 拿Dom元素中的oLis和oImg和父元素oNav,可以用documemt.querySelectorAll 用for循环可以拿出oLis的index值, 写一个显示函数 activ ...

  2. 自己写的原生js轮播图插件

    时间有限,功能有待完善 <!DOCTYPE html> <html lang="en"><head><meta charset=" ...

  3. 原生 js 轮播图(8)

    换图式轮播图(用定时器) <style>*{padding: 0;margin: 0;}span{position: absolute;top: 150px;left: 0;display ...

  4. Bootstrap4框架处理JS轮播

    Bootstrap4框架处理JS轮播 开发工具与关键技术:使用Bootstrap4框架作者:郑健鹏撰写时间:2019年1月16日 我们之前的JS轮播是用原生的JS代码实现,这个方法比较耗费时间,因为还 ...

  5. html轮播图循环效果,TremulaJS-跨设备多功能的无限循环js轮播图插件

    TremulaJS是一款非常酷的跨设备多功能的无限循环js轮播图插件.TremulaJS是一个客户端javascript UI组件,它基于贝兹曲线和物理动量效应制作各种效果,可以制作无限循环的图片流, ...

  6. JavaScript的案例(数据校验,js轮播图,页面定时弹窗)

    1.数据校验             步骤             1.确定事件(onsubmit)并绑定一个函数             2.书写这个函数,获取数据,并绑定id            ...

  7. php 走马灯轮播,Vue.js轮播图走马灯代码实例(全)

    这个是html, 数据中我用了一个数组来放图片的目录, data() { return { superurl: [ { url: '', img: '../../../../static/image/ ...

  8. JS 轮播图 图片切换(定时器)

    标题JS 轮播图 图片切换(定时器) 这次的轮播图与上次的图片切换相比,仅仅是加上了定时器,使其可以自动切换. 上次的图片切换的链接:https://blog.csdn.net/qq_38318589 ...

  9. JS轮播图(网易云轮播图)

    JS 轮播图 写在前面 最聪明的人是最不愿浪费时间的人.--但丁 实现功能 图片自动切换 鼠标移入停止自动播放,显示按钮 点击按钮,实现前后翻 鼠标移入小圆圈,可以跳转到对应图片 点击左右两侧图片部分 ...

最新文章

  1. LeetCode 673. Number of Longest Increasing Subsequence--O(N log N )--Java,C++,Python解法
  2. Oracle RAC CSS 超时计算 及 参数 misscount, Disktimeout 说明
  3. 统一沟通成本节约数据表
  4. android onresume时view,android – 在使用ViewPager滑动时,Fragment不会调用OnResume()
  5. 1 java开发工具IDEA的使用
  6. 【POJ - 1062】【nyoj - 510】昂贵的聘礼 (Dijkstra最短路+思维)
  7. 图书管理系统_目前图书管理系统存在的问题
  8. 窗口缩小 怎么让定位的盒子不动_一次解决你的图像尺寸和定位问题
  9. 如何关闭小娜进程_Python多进程之进程间通信 - Pipe amp; Queue
  10. 关于Redis缓存,这三个问题一定要知道!
  11. 设计安全的账号系统的正确姿势
  12. java语言程序设计第三版沈泽刚课后答案_Java语言程序设计 (第3版) 学习指导与习题解析...
  13. 【Linux】系统移植篇四--uboot移植
  14. 关于PopWindow的一些介绍
  15. [Unity]存档功能
  16. Mac故障 重置PRAM或NVRAM(何时重置,如何重置)
  17. 12个可以免费自学编程的网站
  18. 用XOM编写GraphML?
  19. 猿辅导2019 编程两道
  20. FFmpeg c++ 报错合集

热门文章

  1. 多项目同时进行不顺畅,怎么办?
  2. 第四章 博弈树game tree
  3. 模型服务,GPU,CUDNN报错
  4. day07【线程池、Lambda表达式】(1)
  5. 据说20%的业务能拿到外贸大订单因为懂这个方法
  6. 【软件测试】从事5年资深测试的经验,少走弯路......
  7. ffprobe 的使用介绍
  8. 普通人和厉害的人,最大的差距在哪里?
  9. windows公网ssh+vnc连接局域网内linux服务器
  10. 比较好的两个在线公式识别器