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 相关文章推荐
23个超流行的jQuery相册插件整理分享
Apr 25 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
JavaScript简介
Feb 15 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
学习JavaScript设计模式之中介者模式
Jan 14 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
Vue中的混入的使用(vue mixins)
Jun 01 Javascript
浅谈vue 单文件探索
Sep 05 Javascript
vue实现记事本功能
Jun 26 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
js canvas实现五子棋小游戏
Jan 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
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
JavaScript字符串对象
2017/01/14 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
详谈for循环里面的break和continue语句
2017/07/20 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
微信小程序如何使用globalData的方法
2019/06/06 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
Django小白教程之Django用户注册与登录
2016/04/22 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
2014年流动人口工作总结
2014/11/26 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL