原生JS实现轮播图的效果
原生JS实现轮播图的效果:
只要缕清了全局变量index的作用,这个轮播图也就比较容易实现了;另外,为了实现轮这个效果,有几处clearInterval()必须写上。废话不多说,直接上代码,修复了几个比较诡异的bug:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
body,ul,p{margin:0;padding:0;}
#boxs{position: relative;width:100%;height:460px;}
#box{width:100%;height:460px;}
ul{position:relative;width:100%;height:460px;}
li{width:100%;height:460px;position:absolute;}
img{width:100%;height:100%}
#circle{position: absolute;bottom:0;left:50%;transform: translate(-50%,0);}
#circle span{display:inline-block;height:20px;width:20px;background:white;vertical-align: top;border:1px solid yellow;border-radius:10px;/*float:left;*/}
.on{background:red !important;}
#left{position: absolute;background:red;height:80px;width:50px;line-height:80px;text-align: center;color:white;left:0;top:40%;}
#right{position: absolute;background:red;height:80px;width:50px;line-height:80px;text-align: center;color:white;right:0;top:40%;}
</style>
<script type="text/javascript">
window.onload=function(){
var circle_span=document.getElementById("circle").children;
var list=document.getElementById("ul1").children;
var box1=document.getElementById("boxs");
var btn1=document.getElementById("left");
var btn2=document.getElementById("right");
var timer=null;
var index=0;
play();
box1.onmouseover=function(){
clearInterval(timer);
}
box1.onmouseout=function(){
clearInterval(timer);
play();
}
btn1.onclick=function(){
index--;
if(index<0){
index=5;
}
change(index);
}
btn2.onclick=function(){
index++;
if(index>5){
index=0;
}
change(index);
}
for(var i=0;i<circle_span.length;i++){
circle_span[i].index=i;
circle_span[i].onmouseover=function(){
clearInterval(timer);
change(this.index);
index=this.index;
}
}
function play(){
timer=setInterval(function(){
index++;
if(index>5){
index=0;
}
change(index);
},1000);
}
function change(index){
for(var i=0;i<circle_span.length;i++){
circle_span[i].setAttribute("class","");
list[i].style.display="none";
}
circle_span[index].className="on";
list[index].style.display="block";
}
}
</script>
</head>
<body>
<div id="boxs">
<div id="box">
<ul id="ul1">
<li><img src="img/11.jpg"/></li>
<li><img src="img/22.jpg"/></li>
<li><img src="img/33.jpg"/></li>
<li><img src="img/44.jpg"/></li>
<li><img src="img/55.jpg"/></li>
<li><img src="img/66.jpg"/></li>
</ul>
</div>
<div id="circle">
<span class="on"></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div id="left">向左</div>
<div id="right">向右</div>
</div>
</body>
</html>
原生JS实现轮播图的效果的更多相关文章
- 原生js焦点轮播图
原生js焦点轮播图主要注意这几点: 1.前后按钮实现切换,同时注意辅助图2.中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index3.间隔调用与无限轮播.4.注意在动画时 ...
- 原生js实现轮播图
原生js实现轮播图 很多网站上都有轮播图,但找到一个系统讲解的却很难,因此这里做一个简单的介绍,希望大家都能有所收获,如果有哪些不正确的地方,希望大家可以指出. 原理: 将一些图片在一行中平铺,然后计 ...
- 封装一个简单的原生js焦点轮播图插件
轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...
- 使用原生js将轮播图组件化
代码地址如下:http://www.demodashi.com/demo/11316.html 这是一个轮播图组件,这里是代码地址,需要传入容器的id和图片地址,支持Internet Explor ...
- 用原生js封装轮播图
原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不 ...
- 原生js焦点轮播图的实现
继续学习打卡,武汉加油,逆战必胜!今日咱们主要探讨一下原生js写轮播图的问题, 简单解析一下思路: 1,首先写好css样式问题 2,考虑全局变量:自动播放的定时器,以及记录图片位置的角标Index 2 ...
- 前端基础功能,原生js实现轮播图实例教程
轮播图是前端最基本.最常见的功能,不论web端还是移动端,大平台还是小网站,大多在首页都会放一个轮播图效果.本教程讲解怎么实现一个简单的轮播图效果.学习本教程之前,读者需要具备html和css技能,同 ...
- 第54天:原生js实现轮播图效果
一.轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利用定时器实现自动播放,或通过手动点击事件切换图片. 二.Html布局 首先父容器containe ...
- 原生js封装轮播图
个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行! 原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...
随机推荐
- serilization 序列化 transient 不被序列化
Serizlizable 作用 对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中.JVM停止之后,这些状态就丢失了.在很多情况下,对象的内部状态是需要被持久化下来的.提到持久化,最 ...
- 数据库索引--------B/B+树、聚集、非聚集、符合索引
摘录自博客:http://www.cnblogs.com/morvenhuang/archive/2009/03/30/1425534.html 一.引言 对数据库索引的关注从未淡出我的们的讨论,那么 ...
- c# 删除文件,清理删除文件
c# 删除程序占用的文件,清理删除文件,彻底删除文件,解除文件占用 文件打开时,以共享读写模式打开 FileStream inputStream = new FileStream(name, File ...
- DateReader读取数据
DateReader对象提供了用循序的.只读的方式读取Command对象获取的数据结果集正是因为DateReader是以循序的方法连续地读取数据,所以DateReader会以独占的方式打开数据库连接. ...
- Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)
Excel的导入V2优化版 有些时候文件上传这一步骤由前端来处理,只将上传后的 URL 传输给后端(可以参考上一文中的图片上传功能),也就是导入请求中并不会直接处理 MultipartFile 对象, ...
- 类库项目如何既能支持netcore2.0,也能支持net4.5
手动更改项目配置 .csporj 中的代码 <TargetFramework>netcoreapp2.</TargetFramework> 改成 <TargetFrame ...
- csharp:FlowLayoutPanel
/// <summary> /// 集合添加的控件 /// 涂聚文20150339 /// </summary> public void AddNewTextBox() { P ...
- css3在页面中插入内容
A. 使用选择器来插入内容 h2:before{ content:"前缀"; } h2:after{ content:"后缀"; } B. 指定个别的元素不进行 ...
- 《Linux命令行与Shell脚本编程大全第2版》读书笔记
公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先..... 近3年前的了,只有一半的章节,后面的没空记录了.... 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的 ...
- MySQL数据库(6)----配置文件 my.cnf 的使用
1. 使用源码安装好MySQL后,其配置文件一般位于 /usr/local/my.cnf,可以使用如下命令查看查看配置文件的搜索顺序: root@javis:~$ mysqld --help --ve ...