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实现二分查找法实现代码
Nov 12 Javascript
JS 动态加载脚本的4种方法
May 05 Javascript
js 刷新页面的代码小结 推荐
Apr 02 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
jquery批量设置属性readonly和disabled的方法
Jan 24 Javascript
JS实现仿苹果底部任务栏菜单效果代码
Aug 28 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
在vue中使用SockJS实现webSocket通信的过程
Aug 29 Javascript
vue自定义底部导航栏Tabbar的实现代码
Sep 03 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
使用localStorage替代cookie做本地存储
Sep 25 Javascript
js实现九宫格抽奖
Mar 19 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
Protoss魔法科技
2020/03/14 星际争霸
第一节--面向对象编程
2006/11/16 PHP
PHP里的中文变量说明
2011/07/23 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
PHP实现倒计时功能
2020/11/16 PHP
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
Python模拟登录12306的方法
2014/12/30 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
办公室前台岗位职责
2014/01/04 职场文书
高中体育教学反思
2014/01/24 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
python关于集合的知识案例详解
2021/05/30 Python
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python