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 相关文章推荐
js 发个判断字符串是否为符合标准的函数
Apr 27 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
JS禁用浏览器退格键实现思路及代码
Oct 29 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
Jul 17 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
JavaScript 字符串常用操作小结(非常实用)
Nov 30 Javascript
js + css实现标签内容切换功能(实例讲解)
Oct 09 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 Javascript
微信小程序实现滴滴导航tab切换效果
Jul 24 Javascript
JavaScript创建、读取和删除cookie
Sep 03 Javascript
uni-app微信小程序登录授权的实现
May 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
多文件上传的例子
2006/10/09 PHP
解决php中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
Smarty保留变量用法分析
2016/05/23 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
Python socket编程实例详解
2015/05/27 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python的socket编程入门
2018/01/29 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
美国在线珠宝商店:SZUL
2017/02/11 全球购物
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
三好生演讲稿
2014/09/12 职场文书
协议书范文
2015/01/27 职场文书
人口与计划生育责任书
2015/05/09 职场文书
诚信高考倡议书
2019/06/24 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python