js实现无缝轮播图


Posted in Javascript onMarch 09, 2020

本文实例为大家分享了js实现轮播图的具体代码,供大家参考,具体内容如下

CSS样式:

<style type="text/css">
 #box{width: 1000px;height: 375px;border: 3px solid black;
 margin: 30px auto;position: relative;overflow: hidden;}
 #box .img{position: absolute;left: 0;top: 0;}
 #box .img img{width: 1000px;height: 375px;float: left;}
 #box .btn input{border-radius: 50%;border: 0;width: 40px;
 height: 40px;font-size: 25px;z-index: 5;top: 165px;position: absolute;}
 #left{left: 0;}
 #right{right: 0;}
</style>

HTML结构:

<div id="box">
 <div class="img">
 <img src="img/1.jpg" >
 <img src="img/2.jpg" >
 <img src="img/3.jpg" >
 <img src="img/4.jpg" >
 <img src="img/1.jpg" > //利用第一张图,达到无缝轮播的视觉效果
 </div>
 <div class="btn">
 <input type="button" id="left" value="<" />
 <input type="button" id="right" value=">" />
 </div>
</div>

JavaScript:

<script>
 class LunBO{
 constructor() {
  this.img = document.querySelector(".img");
 this.child = this.img.children;
 this.left = document.getElementById("left");
 this.right = document.getElementById("right");
 this.index = 0;
 }
 init(){
 this.img.style.width = this.child.length * this.child[0].offsetWidth + "px"; //有多少图片设置多少宽度
 }
 addEvent(){
 var that = this;
 this.left.onclick = function(){
 that.changeIndex(1); //点击左按钮,设置索引
 }
 this.right.onclick = function(){
 that.changeIndex(2); //点击右按钮,设置索引
 }
 }
 changeIndex(i){
 if(i==1){
 if(this.index == 0){
  this.index = this.child.length - 2;
  this.img.style.left = -(this.child.length-1) * this.child[0].offsetWidth + "px";
 }else{
  this.index--;
 }
 }else{
 if(this.index == this.child.length-1){
  this.index = 1;
  this.img.style.left = 0;
 }else{
  this.index++;
 }
 }
 this.setSplace();
 }
 setSplace(){
 move(this.img,"left",-this.index * this.child[0].offsetWidth); //调用动画
 }
 }
 var lb = new LunBO();
 lb.init();
 lb.addEvent();
</script>

设置动画:

function move(ele,attr,target){
 clearInterval(ele.t);
 ele.t=setInterval(()=>{
 let iNow;
 if(attr=="opacity"){
 iNow=getStyle(ele,attr)*100;
 }else{
 iNow=parseInt(getStyle(ele,attr));
 }
 let speed=(target-iNow)/8;
 speed=speed<0?Math.floor(speed):Math.ceil(speed);
 if(iNow==target){
 clearInterval(ele.t);
 }else{
 if(attr=="opacity"){
 ele.style.opacity=(iNow+speed)/100;
 }else{
 ele.style[attr]=iNow+speed+"px";
 }
 }
 },30)
}
function getStyle(ele,attr){
 if(ele.currentStyle){
 return ele.currentStyle[attr];
 }else{
 return getComputedStyle(ele,false)[attr];
 }
}

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript编程起步(第二课)
Feb 27 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
Oct 30 Javascript
Jquery升级新版本后选择器的语法问题
Jun 02 Javascript
jquery next nextAll nextUntil siblings的区别介绍
Oct 05 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
Jun 17 Javascript
JavaScript 保护变量不被随意修改的实现代码
Sep 27 Javascript
vue中实现图片和文件上传的示例代码
Mar 16 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
Mar 09 #Javascript
原生js实现瀑布流效果
Mar 09 #Javascript
原生JS实现贪吃蛇小游戏
Mar 09 #Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
Mar 09 #Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 #Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 #Javascript
JS中的const命令你真懂它吗
Mar 08 #Javascript
You might like
php编写一个简单的路由类
2011/04/13 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
JavaScript函数详解
2014/11/17 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
Python常用知识点汇总
2016/05/08 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
python多进程实现进程间通信实例
2017/11/24 Python
python实现简单登陆流程的方法
2018/04/22 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
网络安全方面的面试题
2016/01/07 面试题
大学生职业生涯设计书
2014/01/02 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
通知书大全
2015/04/27 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
python高温预警数据获取实例
2022/07/23 Python