JS实现横向轮播图(初级版)


Posted in Javascript onJune 24, 2020

本文实例为大家分享了JS实现横向轮播图的具体代码,供大家参考,具体内容如下

描述:

轮播图,初级,横向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉),核心知识是数据驱动图像的位移达到效果。

效果:

JS实现横向轮播图(初级版)

代码:

js文件:

/*
* 工厂模式
* */
 
var Method=(function () {
 return {
 loadImage:function (arr,callback) {
 var img=new Image();
 img.arr=arr;
 img.list=[];
 img.num=0;
 img.callback=callback;
// 如果DOM对象下的事件侦听没有被删除掉,将会常驻堆中
// 一旦触发了这个事件需要的条件,就会继续执行事件函数
 img.addEventListener("load",this.loadHandler);
 img.self=this;
 img.src=arr[img.num];
 },
 
 loadHandler:function (e) {
 this.list.push(this.cloneNode(false));
 this.num++;
 if(this.num>this.arr.length-1){
 this.removeEventListener("load",this.self.loadHandler);
 this.callback(this.list);
 return;
 }
 this.src=this.arr[this.num];
 },
 
 $c:function (type,parent,style) {
 var elem=document.createElement(type);
 if(parent) parent.appendChild(elem);
 for(var key in style){
 elem.style[key]=style[key];
 }
 return elem;
 }
 }
})();

html文件:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
 *{
 margin: 0;
 padding: 0;
 }
 #carousel,#imgCon img{
 width: 1200px;
 height: 400px;
 }
 #carousel
 {
 position: relative;
 margin: auto;
 overflow: hidden;
 }
 #imgCon{
 width: 6000px;
 height: 400px;
 position: absolute;
 left: 0;
 font-size: 0;
 transition: all 1s;
 }
 #leftBn,#rightBn
 {
 position: absolute;
 top:170px;
 }
 #leftBn{
 left: 20px;
 }
 #rightBn
 {
 right: 20px;
 }
 ul{
 position: absolute;
 bottom: 20px;
 list-style: none;
 margin: auto;
 left: 45%;
 }
 li
 {
 width: 20px;
 height: 20px;
 border: 1px solid red;
 border-radius: 10px;
 float: left;
 text-align: center;
 color: white;
 cursor: default;
 line-height:20px;
 font-size: 12px;
 margin-left: 8px;
 }
 </style>
</head>
<body>
 <div id="carousel">
 <div id="imgCon">
 <img src="img/a.jpeg">
 <img src="img/b.jpeg">
 <img src="img/c.jpeg">
 <img src="img/d.jpeg">
 <img src="img/e.jpeg">
 </div>
 <ul>
 <li>1</li>
 <li>2</li>
 <li>3</li>
 <li>4</li>
 <li>5</li>
 </ul>
 <img src="img/left.png" id="leftBn">
 <img src="img/right.png" id="rightBn">
 </div>
<script>
 /*
 *
 * 数据驱动显示
 *
 * */
 var imgCon,leftBn,rightBn,lis,ul,prevLi;
 var position=0;//图像的标记 第一张0 第二张1...
 init();
 function init() {
 imgCon=document.getElementById("imgCon");//图
 leftBn=document.getElementById("leftBn");//左按钮
 rightBn=document.getElementById("rightBn");//右按钮
 lis=document.getElementsByTagName("li");//下方数字右按钮
 ul=document.getElementsByTagName("ul")[0];
 leftBn.addEventListener("click",clickHandler);
 rightBn.addEventListener("click",clickHandler);
 for(var i=0;i<lis.length;i++){//为每隔小Li 也就是底部数字赋值
 lis[i].num=i;
 lis[i].addEventListener("click",liClickHandler);
 }
 changeLi();
 }
 
// setInterval(autoImg,3000);可以实现自动
 
 function autoImg() {//自动轮播
 position++;
 if(position>4) position=0;
 changeImg();
 }
 
 function clickHandler(e) {
 e= e || window.event;
 if(this===leftBn){
 position--;
 if(position<0) position=4;
 }else if(this===rightBn){
 position++;
 if(position>4) position=0;
 }
 changeImg();
 }
 
 function liClickHandler(e) {
 e= e || window.event;
 position=this.num;
 changeImg();
 }
 function changeImg() {//图片的转换效果 唯一
 imgCon.style.left=-position*1200+"px";//一次一张图片的位移
 changeLi();
 }
 
 function changeLi() {//底部数字的转换效果
 if(prevLi){
 prevLi.style.backgroundColor="rgba(255,0,0,0)";
 }
 prevLi=lis[position];
 prevLi.style.backgroundColor="rgba(255,0,0,0.5)";
 }
</script>
</body>
</html>

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 带有滚动条的表格,标题固定,带排序功能.
Nov 13 Javascript
用Javascript实现Windows任务管理器的代码
Mar 27 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
Node.js编码规范
Jul 14 Javascript
JavaScript插件化开发教程 (三)
Jan 27 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
sencha ext js 6 快速入门(必看)
Jun 01 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
vue+axios 前端实现的常用拦截的代码示例
Aug 23 Javascript
javascript中一些奇葩的日期换算方法总结
Nov 14 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 #Javascript
微信小程序开发中var that =this的用法详解
Jan 18 #Javascript
JavaScript实现滑动门效果
Jan 18 #Javascript
JS数组方法push()、pop()用法实例分析
Jan 18 #Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 #Javascript
JS数组方法join()用法实例分析
Jan 18 #Javascript
JavaScript进制转换实现方法解析
Jan 18 #Javascript
You might like
php使用GD2绘制几何图形示例
2017/02/15 PHP
php给数组赋值的实例方法
2019/09/26 PHP
asp.net和php的区别点总结
2019/10/10 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
jQuery功能函数详解
2015/02/01 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
利用Python如何批量更新服务器文件
2018/07/29 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
超简单使用Python换脸实例
2019/03/27 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
大学生毕业鉴定
2014/01/31 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
先进班集体申报材料
2014/12/26 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书