js中用面向对象的思想——淡入淡出轮播图
2024-10-06 11:59:22
首先看下效果图
明确功能 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">«</a>
<a href="javascript:;" id="goNext">»</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')
效果已实现
最新文章
- C#中的泛型
- 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 &#39;#TT&#39; 中的标识列插入显式值。 sql server 临时表
- Base64 字符串转图片 问题整理汇总
- 在网页中显示html代码
- jetty-如何配置虚拟主机【转】
- codevs4203山区建小学
- Ubuntu下安装PDF 文档阅读器Adobe Reader 9.5.5
- android 快捷技巧
- PHP学习2 — PHP Cookie 与 Session
- .net 非对称加密
- 移动端APP CSS Reset及注意事项CSS重置
- 如何写出如散文般的代码――《代码整洁之道》读书笔记(Ch1-Ch3)
- 为什么java中用枚举实现单例模式会更好
- tensorflow 经典教程及案例
- Linux之cat的使用
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
- ASP.NET MVC与Sql Server交互,把字典数据插入数据库
- JProfiler8 远程监控tomcat配置过程
- debian更新源时找不到公钥的解决办法
- echo图片延迟加载js
热门文章
- Python的未来发展方向
- 安装sublime text3 、转化为汉化版、安装SublimeREPL使得在交互条件下运行代码,设置快捷键
- Multiple types were found that match the controller named &#39;Auth&#39;.
- SharePoint 2013 Sandbox Solution
- ThinkPHP框架快速开发网站
- Spark 学习笔记之 Streaming和Kafka Direct
- B-概率论-贝叶斯决策
- windows服务器多端口Redis安装步骤
- LeetCode_844-Backspace String Compare
- bugku旋转跳跃