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类库D
Oct 24 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
Jan 24 Javascript
JavaScript在多浏览器下for循环的使用方法
Nov 07 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
Apr 06 Javascript
Javascript闭包实例详解
Nov 29 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
Mar 28 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
Mar 01 Javascript
vue 中filter的多种用法
Apr 26 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 Javascript
详细分析Node.js 多进程
Jun 22 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
实例浅析js的this
2016/12/11 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
医药专业推荐信
2013/11/15 职场文书
《母鸡》教学反思
2014/02/25 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
优秀毕业生求职信
2014/06/05 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
幼师辞职信范文
2015/02/27 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python