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 相关文章推荐
function, new function, new Function之间的区别
Mar 08 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
Mar 22 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
javascript中数组的concat()方法使用介绍
Dec 18 Javascript
jquery prop的使用介绍及与attr的区别
Dec 19 Javascript
jQuery选择器之基本选择器与层次选择器
Mar 03 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
使用InstantClick.js让页面提前加载200ms
Sep 12 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 Javascript
基于Vue的侧边目录组件的实现
Feb 05 Javascript
Vue组件化(ref,props, mixin,.插件)详解
May 15 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数组
2006/10/09 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
extjs render 用法介绍
2013/09/11 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
wxPython窗口中文乱码解决方法
2014/10/11 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
python机器学习之贝叶斯分类
2018/03/26 Python
Python多继承原理与用法示例
2018/08/23 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
汽车驾驶求职信
2013/10/25 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
党员承诺践诺书
2014/05/20 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
八年级英语教学反思
2016/02/15 职场文书
Python字符串的转义字符
2022/04/07 Python