首先看下效果图

明确功能 1.前后切换(边界判断) 2.按键切换  3.自动轮播

css代码

<style>
* {margin:0; padding:0;}
li{list-style:none; } #div1 {width:850px; height:500px; margin:50px auto; overflow:hidden; position:relative;}
#div1 ul li{height:500px;opacity: 0;position: absolute;left: 0;top: 0;z-index: 0;transition: opacity 1.5s;}
#div1 ul li.ac{z-index: 5;opacity: 1;}
#div1 ol {position:absolute;right: 10%;bottom: 10px;z-index:6}
#div1 ol li{width: 20px;height: 20px;background: #fff;margin-left: 5px;float: left;line-height: 20px;text-align: center;cursor: pointer;}
#div1 ol li.ac{background: red;color: #fff;}
#div1>a{text-decoration: none;position: absolute;top: 50%;margin-top: -10px;height: 40px;line-height: 32px;text-align: center;width: 40px;font-size: 40px;vertical-align: middle;color: #fff;background: rgba(0,0,0,0.5);z-index:6;}
#goPrev{left: 0;}
#goNext{right: 0;}
img{width:850px; height:500px;}
</style>

body中的代码

 <div id="div1">
<ul>
<li class="ac"><a href="javascript:alert(0);"><img src="/1.jpg" /></a></li>
<li><a href="javascript:alert(1);"><img src="/2.jpg" /></a></li>
<li><a href="javascript:alert(2);"><img src="/3.jpg" /></a></li>
<li><a href="javascript:alert(3);"><img src="/4.jpg" /></a></li>
<li><a href="javascript:alert(4);"><img src="/5.jpg" /></a></li>
</ul>
<ol>
<li class="ac">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
<a href="javascript:;" id="goPrev">&laquo;</a>
<a href="javascript:;" id="goNext">&raquo;</a>
</div>

js代码

 class LB{

         constructor(){

             this.div = document.querySelector('#div1'),
this.imgs = this.div.querySelectorAll('ul li'),
this.btns = this.div.querySelectorAll('ol li'),
this.goPrev = document.querySelector('#goPrev'),
this.goNext = document.querySelector('#goNext'); this.iNow = 0
this.iLast = 0
this.timer = null this.BtnsEvent()
this.goEvent()
this.gotimer() } BtnsEvent(){ Array.from(this.btns).forEach((btns,i) => { this.btns[i].onclick = () => {
this.iLast = this.iNow
this.iNow = i
this.change()
}
})
} goEvent(){ //向->切换
this.goNext.onclick = () => { this.iLast = this.iNow
this.iNow == this.btns.length-1? this.iNow=0:this.iNow++
this.change()
} //向<-切换
this.goPrev.onclick = () => { this.iLast = this.iNow
this.iNow == 0? this.iNow=this.btns.length-1:this.iNow--
this.change()
} } gotimer(){ this.timer = setInterval(this.goNext.onclick,2000) this.div.onmouseenter = () => {
clearInterval(this.timer)
} this.div.onmouseleave = () => { this.timer = setInterval(this.goNext.onclick,2000)
}
} //更改图片
change(){ this.btns[this.iLast].className = ''
this.imgs[this.iLast].className = ''
this.btns[this.iNow].className = 'ac'
this.imgs[this.iNow].className = 'ac' } } var lb =new LB('#div1')

效果已实现

js中用面向对象的思想——淡入淡出轮播图的更多相关文章

  1. js渐隐渐现透明度变化淡入淡出轮播图

    js渐隐渐现透明度变化淡入淡出轮播图.焦点图 一些广告banner展示常见. (附件) <!DOCTYPE html> <html> <head> <meta ...

  2. jQuery淡入淡出轮播图实现

    大家好我是 只是个单纯的小白,这是人生第一次写博客,准备写的内容是Jquery淡入淡出轮播图实现,在此之前学习JS写的轮播图效果都感觉不怎么好,学习了jQuery里的淡入淡出效果后又写了一次轮播图效果 ...

  3. jquery的fadeTo方法的淡入淡出轮播图插件

    由于对基于jquery的简单插件开发有了一定的了解,慢慢的也对基于jquery的插件开发有了兴趣,在上班结束之后就研究各种插件的思路逻辑.最近开发了一款基于jquery的fadeTo方法的轮播图插件, ...

  4. jq交叉淡入淡出轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. jquery淡入淡出轮播图

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. vue渐变淡入淡出轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. js 基础篇(点击事件轮播图的实现)

    轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...

  8. js+jq 淡入淡出轮播(点击+定时+鼠标进入移出事件)

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  9. js原生选项卡(包含无缝滚动轮播图)一

    原生js选项卡的几种写法,整片文章我会由简及难的描述几种常用的原生选项卡的写法: Improve little by little every day! 1>基本选项卡: 思路:循环中先清除再添 ...

随机推荐

  1. Spring boot 梳理 - Spring boot自动注册DispatcherServlet

    spring boot提供的DispatcherServlet的name就是“dispatcherServlet”. 源码 public ServletRegistrationBean dispatc ...

  2. Hadoop点滴-何时使用hadoop fs、hadoop dfs与hdfs dfs命令

    何时使用hadoop fs.hadoop dfs与hdfs dfs命令 编辑 删除 hadoop fs:使用面最广,可以操作任何文件系统. hadoop dfs与hdfs dfs:只能操作HDFS文件 ...

  3. Angular template ng-template/container/content

    1. ng-template 形式:<ng-template>...</ng-template> 默认ng-template中的内容会隐藏; 可通过[ngIf]来控制内容显示隐 ...

  4. C#2匿名方法中的捕获变量

    乍一接触"匿名方法中的捕获变量"这一术语可能会优点蒙,那什么是"匿名方法中的捕获变量"呢?在章节未开始之前,我们先定义一个委托:public delegate  ...

  5. 使用 BeanDefinition 描述 Spring Bean

    什么是BeanDefinition 在Java中,一切皆对象.在JDK中使用java.lang.Class来描述类这个对象. 在Spring中,存在bean这样一个概念,那Spring又是怎么抽象be ...

  6. 夯实Java基础系列23:一文读懂继承、封装、多态的底层实现原理

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  7. Scala 占位符在REPL和Eclipse/IDEA中初始化变量问题

    占位符在REPL和Eclipse/IDEA中初始化变量问题: 占位符初始化,如果是局部变量,都会报错!只能在全局变量中使用! REPL: Eclipse: IDEA: 如果是类的属性,却就是对的.

  8. 03-Django基础概念和MVT架构

    一.Django基础 掌握Django的 MVT 架构的使用 掌握Git管理源代码 主要内容 了解Django的 MVT 架构的使用流程 使用Django完成案例 : 书籍信息管理 MVC介绍 MVC ...

  9. 本次作业统一标题:C语言I博客作业02

    这个作业属于哪个课程 C语言程序设计1 这作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在这个课程的目标是 ...

  10. ASP.NET Web API 2系列(二):灵活多样的路由配置

    1. 导言 路由系统是请求消息进入ASP.NET Web API消息处理管道的第一道屏障,其根本目的在于利用注册的路由对请求的URL进行解析以确定目标HTTPController和Action的名称, ...