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 相关文章推荐
FormValidate 表单验证功能代码更新并提供下载
Aug 23 Javascript
Prototype 工具函数 学习
Jul 23 Javascript
Javascript学习笔记5 类和对象
Jan 11 Javascript
jquery each()源代码
Feb 14 Javascript
在jQuery中 常用的选择器介绍
Apr 16 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
Dec 18 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
Mar 26 Javascript
node.js中的fs.rename方法使用说明
Dec 16 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
手动初始化Angular的模块与控制器
Dec 26 Javascript
jQuery插件zTree实现获取一级节点数据的方法
Mar 08 Javascript
ES6函数和数组用法实例分析
May 23 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面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python 含参构造函数实例详解
2017/05/25 Python
python实现上传下载文件功能
2020/11/19 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
数学系个人求职信范文
2014/01/30 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL