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学习笔记一 之 数据类型
Dec 15 Javascript
javascript数字数组去重复项的实现代码
Dec 30 Javascript
js获取单选框或复选框值及操作
Dec 18 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
Jan 07 Javascript
javascript使用isNaN()函数判断变量是否为数字
Sep 21 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
Jun 14 Javascript
js H5 canvas投篮小游戏
Aug 18 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
JavaScript函数绑定用法实例分析
Nov 14 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 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语法(1)
2006/10/09 PHP
php基础知识:函数基础知识
2006/12/13 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
2012/09/21 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
js实现小星星游戏
2020/03/23 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
python2.7安装图文教程
2018/03/13 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
建筑实习自我鉴定
2013/10/18 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
公司营业员的自我评价
2014/03/04 职场文书
自主招生学校推荐信
2014/09/26 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书