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中的isXX系列
Aug 01 Javascript
JSON无限折叠菜单编写实例
Dec 16 Javascript
JavaScript 学习笔记之操作符
Jan 14 Javascript
原生js获取left值和top值的三种方法
Aug 02 Javascript
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
js canvas实现画图、滤镜效果
Nov 27 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
解决vue字符串换行问题(绝对管用)
Aug 06 Javascript
JS轮播图的实现方法
Aug 24 Javascript
vue 数据操作相关总结
Dec 17 Vue.js
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 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
smarty简单分页的实现方法
2014/10/27 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
详解PHP归并排序的实现
2016/10/18 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python中的set实现不重复的排序原理
2018/01/24 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
了解一下python内建模块collections
2020/09/07 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
护理专业个人求职简历的自我评价
2013/10/13 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
Python实现文字pdf转换图片pdf效果
2022/04/03 Python