js 基础篇必看(点击事件轮播图的简单实现)


Posted in Javascript onAugust 20, 2016

轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现。但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法:

1、利用位移的方法来实现

首先,我们可以在body中添加一个div并且将宽度设置成百分比(自适应页面),比例具体是相对谁的百分比的话按需求来做,在这里不多说。将图片放入到div 中。

其次,样式部分将img标签全部设置成absolute;以方便定位

最后,js部分说说逻辑,定义两个空数组,第一个数组用来保存初始的显示在页面的图片和等待进入的图片,第二个数组保存其余的n张图片,假设这两个数组分别设置为:waitToShow=[]; 和 goOut=[];   waitToShow.shift();弹出第一张图片假如命名为showFirst,并为showFirst图片设置位移和移动时间,执行完成之后showFirst放入goOut尾部:goOut.push(showFirst);  这时waitToShow数组的第0个元素就变成原来的第二张要显示的图片,给这个图片waitToShow[0]设置位移和移动时间,并且将goOut数组的首元素图片弹出来,在放进waitToShow数组的尾部,保证waitToShow数组永远是一张显示的图片和待显示的图片,这样就通过两个数组形成了一个循环来完成轮播图的实现。反向的逻辑是一样的(由于逻辑过于复杂这里不推荐)

2、利用层级的高低来使最顶部图片变化的做法(这个做法没有位移的动作,但是逻辑却非常简便,很实用)

直接来代码更直观点:基本每行都有注释

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>轮播图 (闪现 自适应)</title>
<style media="screen">
* {
margin: 0;
padding: 0;
}
.wrap {
width: 60%;
background: red;
margin: auto;
position: relative;
}
.wrap img {
width: 100%;
position: absolute;
/*z-index: 10;*/
}
input {
border: 1px solid lightgray;
width: 50px;
height: 30px;
background: red;
border-radius: 5px;
font-size: 20px;
}
</style>
</head>
<body>
<div class="wrap">
<img src="img/01.jpg" alt="" />
<img src="img/02.jpg" alt="" />
<img src="img/03.jpg" alt="" />
<img src="img/04.jpg" alt="" />
</div>
<input type="button" id="butLeft" name="name" value="◀︎">
<input type="button" id="butRight" name="name" value="▶︎">
</body>
<script type="text/javascript">
// 获取images元素生成字符串数组,字符串数组不能进行push pop splice 等操作
// 所以要将它的值重新存放进一个数组中,后面有定义
var images = document.getElementsByTagName('img');
var butLeft = document.getElementById('butLeft');
var butRight = document.getElementById('butRight');
//获取变量index 用来为后面设置层级用
var index = 1000;
// 获取一个空的数组,用来存放images里面的字符串元素
var imagess = [];

// for循环用来给imagess数组赋值,并且改变数组中的元素的层级
for (var i = 0; i < images.length; i++) {
imagess[i] = images[i];
var currentImage = imagess[i];
// 当前图片的层级的设置,一轮for循环都为他们设置了初始的zIndex,图片越靠前,层级设置
// 要求越高,所以用的是-i,这样图片会按顺序从第一张,第二张.....依次向下
currentImage.style.zIndex = -i;
}

// 设置计数器count,执行一次点击事件(向左或者向右)count加1
var count = 0;
// 向左的点击事件
butLeft.onclick = function() {
// 从数组头部弹出一个图片元素
var showFirst = imagess.shift();
// 给弹出的这个图片元素设置层级,即 -1000+count,
// 让层级相较其他元素是最小的,数组头部弹出的图片会显示在最底层
showFirst.style.zIndex = - index + count;
// 层级改变完成后再将他push进数组的尾部
imagess.push(showFirst);
// 点击一次加1,不用考虑具体的值,只需要有点击事件加 1
count++;
}
// 向右点击事件
butRight.onclick = function() {
// 从imagess的尾部弹出一个元素,并赋值给showFirst
var showFirst = imagess.pop();
// 设置showFirst的层级为最大,1000+count ,这样他会显示在第一层
showFirst.style.zIndex = index + count;
// 层级改变之后将他在插入数组imagess的头部
imagess.unshift(showFirst);
// 点击一次加1
count++;
}
</script>
</html>

以上这篇js 基础篇必看(点击事件轮播图的简单实现)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
二级域名转向类
Nov 09 Javascript
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
Nov 25 Javascript
排序算法的javascript实现与讲解(99js手记)
Sep 28 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
Javascript操作表单实例讲解(下)
Jun 20 Javascript
RequireJs的使用详解
Feb 19 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
May 30 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
再谈Javascript中的异步以及如何异步
Aug 19 #Javascript
用原生js统计文本行数的简单示例
Aug 19 #Javascript
jQuery购物网页经典制作案例
Aug 19 #Javascript
手机Web APP如何实现分享多平台功能
Aug 19 #Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 #Javascript
js实现select选择框效果及美化
Aug 19 #Javascript
JavaScript面向对象编写购物车功能
Aug 19 #Javascript
You might like
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
php HTML无刷新提交表单
2016/04/05 PHP
php封装的page分页类完整实例
2016/10/18 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
vue微信分享插件使用方法详解
2020/02/18 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
python创造虚拟环境方法总结
2019/03/04 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
大学毕业生简单自荐信
2013/11/05 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
党员转正申请报告
2015/05/15 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server