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 相关文章推荐
9个javascript语法高亮插件 推荐
Jul 18 Javascript
jquery怎样实现ajax联动框(二)
Mar 08 Javascript
jquery批量设置属性readonly和disabled的方法
Jan 24 Javascript
跟我学习javascript的this关键字
May 28 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
Nov 30 Javascript
深入理解jquery中的事件与动画
May 24 Javascript
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
Vue通过WebSocket建立长连接的实现代码
Nov 05 Javascript
js实现批量删除功能
Aug 27 Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 Javascript
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
基于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
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
Smarty变量用法详解
2016/05/11 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
Python中除法使用的注意事项
2014/08/21 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python实现批量压缩图片
2018/01/25 Python
Django开发中复选框用法示例
2018/03/20 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
大二学生职业生涯规划书
2014/02/05 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
MySQL RC事务隔离的实现
2022/03/31 MySQL
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript