**轮播图实现原理:
通过多张图片平铺,用overflow:hidden只显示一张图片、其他的隐藏,无缝滚动用定时器改变元素的left值让图片呈现左右滚动的效果。**

HTML布局和内容:
1.容器container存放子容器,子容器lis的a标签存在图片。
2.子容器tips存放按钮小圆点。

<div id="container">
<div id="lis">
<a href="#"><img src="img/B1.jpg" alt=""></a>
<a href="#"><img src="img/B2.jpg" alt=""></a>
<a href="#"><img src="img/B3.jpg" alt=""></a>
<a href="#"><img src="img/B4.jpg" alt=""></a>
<a href="#"><img src="img/B5.jpg" alt=""></a>
</div>
<!-- 图片下面的那一排小圆点 到时候用JS动态输出-->
<ul id="tips">
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<!-- 左右按钮 -->
<div id="btn">
<a href="#" id="up">&lt;</a>
<a href="#" id="next">&gt;</a>
</div>
</div>

CSS样式:
1.注意container的overflow:hidden;只显示窗口的一张图片,把左右两边的都隐藏起来。
2.CSS3:after伪元素清除浮动,利用 clear 属性,包括在浮动元素末尾添加一个带有 clear: both 属性的空 div 来闭合元素,其实利用 :after 伪元素的方法也是在元素末尾添加一个内容为一个点并带有 clear: both 属性的元素实现的。
3.小圆点无论多少都要居中,CSS3:position & transform: translate(-50%) 实现块元素百分比下居中。

<style>
/* 容器的高 宽 相对定位 超出隐藏*/
#container{
width:800px;
height:400px;
margin: 0 auto;
position:relative;
overflow:hidden;
}
/************************ 内容的高 宽 绝对定位 偏移************************/
#lis{
width: 4000px;
height: 400px;
position:absolute;
left:0;
}
#lis a{
float:left;
}
/* 清除img浮动,正常撑开a高与高 */
#lis a:after{
content:"";
display:block;
clear:both;
}
/* 清除IMG之间边距 无缝拼接 */
#list img{
float:left;
} /******* 一排小圆点************/
#tips{
margin:0;
padding:0;
z-index:999;
position: absolute;
bottom: 0;
left: 50%;
transform: translate(-50%);
list-style:none; }
#tips li{
width:18px;
height: 18px;
border-radius:50%;
background:#333;
float:left;
margin-left:5px;
}
/* 切换到相应的图片 相应小圆点的颜色 */
#tips .active{
background:red;
}
/**** 左右按钮 绝对定位 大小 去下划线****************/
#btn a{
position:absolute;
top:50%;
margin-top:-100px;
font-size:100px;
text-decoration: none;
}
#btn #next{
position:absolute;
right:0%; }
</style>

静态的效果图了!

JavaScript部分
1.查找要触发的元素左右箭头!
2.创建事件当点击时改变偏移的值。
3.判断偏移值是否内容(#lis)的width;
4.设置自动轮播事件,制作定时器timer setInterval()执行多次!
5.设置暂停轮播事件,clearInterval(timer);//移除定时器!
6.鼠标移出onmouseout 移入onmouseover轮播图区域执行自动和暂停轮播事件
7.设置圆点和相应图片同步切换的事件,点击圆点切换图片 有闭包的知识!


      <script>
var next=document.getElementById("next");//查找一个叫next id;
var up=document.getElementById("up");//查找一个叫up id;
var lis=document.getElementById("lis");//查找一个叫lis id;
var imgCount=lis.getElementsByTagName("img");//查找lis所有图片;
var countMove=imgCount.length*-800;//定义变量用保存偏移的总值;
var container=document.getElementById("container");//获取整个轮播图区域
var ul=document.getElementById("tips");//查找一个叫tips id;
var list=ul.getElementsByTagName("li");//查找ul全部圆点
var timer;
var index=0;//list下标 从0开始!
console.log(lis.width);
var move=0;//定义变量用保存偏移的值;
//设置next下一张点击事件
2.
next.onclick=function(){
move-=800;//每点击一次偏移-800PX; 第一张图后style.left都为负值。
index+=1;
if(move===countMove){//如果偏移(move)等于countMove(4000),就move为0(0是第一张)
move=0;
index=0;
}
lis.style.left=move+"px";//设置向偏移left:move
circle();//切换相对应圆点
}
//设置up上一张点击事件
up.onclick=function(){
index-=1;
if(move===0){ //如果偏移(move)等于0,就move为countMove(4000);
move=countMove;
index=list.length-1;
}
move+=800;
lis.style.left=move+"px";//设置向偏移left:move
circle();//切换相对应圆点
}
//设置轮播事件
function play(){
timer=setInterval(function(){ //内置定时器多次执行
next.onclick();//每1.5秒执行下一张事件!!
},1500)
} play();//加载JS自动轮播!
//设置暂停轮播事件
function stop(){
clearInterval(timer);//移除定时器
}
container.onmouseout=play;//当鼠标移出轮播图区域执行自动轮播事件
container.onmouseover=stop;//当鼠标移入轮播图区域执行暂停轮播事件
//设置圆点和图片同步切换的事件
function circle(){
for(var i=0; list.length>i;i++){//for循环语句 循环所有圆点
if(list[i].className=="active"){ //if条件语句 如果其中一个圆点的Class等于active
list[i].className=""; //其他圆点就是Class设置为空
}
list[index].className="active";//list下标为index 设置Calss为cative;
}
}
for(var i=0; list.length>i;i++){ //for循环语句 循环所有圆点
(function(i){ //闭包
list[i].onclick=function(){ //圆点点击事件
lis.style.left=i*-800+"px";//设置lis偏移的值
index=i;
circle();
}
})(i); //传入I
} </script>

我是初学者:
借鉴于前辈的博客:http://www.cnblogs.com/LIUYAN...

javascript简单轮播图的更多相关文章

  1. JavaScript焦点轮播图

    在慕课学习了JavaScript焦点轮播图特效,在此做一个整理. 首先是html结构,我用的是本地同文件夹下的三张图片,多出来的第一张(pic3副本)和最后一张图片(pic1副本)是为了实现无缝切换效 ...

  2. JS---案例:简单轮播图

    案例:简单轮播图 div叫盒子,里面包了2个小盒子,一个是inner,一个是square inner的div是放ul,里面有li,a,和图片 square的div里面放span,是轮播图的小点 < ...

  3. HTML+CSS+Javascript实现轮播图效果

    HTML+CSS+Javascript实现轮播图效果 注意:根据自己图片大小来更改轮播图大小. <!doctype html> <html> <head> < ...

  4. JavaScript实现简单轮播图动画

    运行效果: 源代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&quo ...

  5. 手把手原生js简单轮播图

    在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用 ...

  6. (新手向)基于Bootstrap的简单轮播图的手机实现

    个人电脑里存了不少适合手机欣赏的图片,但是放手机里看是件很占据资源的事.鉴于家里有一台电脑经常开着,正好用来做家庭局域网共享,于是笔者就设想通过一种比较简单环保的思路.通过手机访问电脑内的图片. 首先 ...

  7. js写的简单轮播图

    这个轮播图代码是从网上找来的,专门找了个写法简单的,只是作为一个小练习,大概原理如下: 1.首先是图片切换2.自动播放3.调用自动播放4.移动到容器上边停止播放,离开自动播放5.移动到导航上停止播放, ...

  8. 原生js简单轮播图 代码

    在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用 ...

  9. 原生javascript焦点轮播图

    刚刚学会,写了一个轮播图效果,不过bug蛮多,请高手指点一下,谢谢 <!DOCTYPE html> <html> <head> <meta charset=& ...

随机推荐

  1. Elasticsearch-URL查询实例解析

    ES(elasticsearch),以下简称ES ES的查询有query.URL两种方式,而URL是比较简洁的一种,本文主要以实例探讨和总结URL的查询方式 1.语法 curl [ -s][ -g][ ...

  2. Spring @Column的注解详解

    就像@Table注解用来标识实体类与数据表的对应关系类似,@Column注解来标识实体类中属性与数据表中字段的对应关系. 该注解的定义如下: @Target({METHOD, FIELD}) @Ret ...

  3. Node.js //TODO

    目录 技术背景 开发环境 学习过程 参考资料 结束语 技术背景 开发环境 学习过程 参考资料 结束语

  4. OpenCL介绍

    OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器.桌面 ...

  5. 蓝桥杯-PREV3-带分数

    有人管蓝桥杯叫暴力杯,现在感觉还是挺贴切的.看到这题首先想到让i从1到n循环,首先判断i中无重复数字,再怎样判断能否用剩下的数构成n - i的假分数.之后看了题解.发现思路错了. 总结两点: 1.蓝桥 ...

  6. deeplearning.ai 神经网络和深度学习 week1 深度学习概论

    1. 预测房价.广告点击率:典型的神经网络,standard NN. 图像:卷积神经网络,CNN. 一维序列数据,如音频,翻译:循环神经网络,RNN. 无人驾驶,涉及到图像.雷达等更多的数据类型:混合 ...

  7. JavaScript学习总结(八)正则表达式

    转自:http://segmentfault.com/a/1190000000699097 基本概念 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”) ...

  8. 反编译.net下的exe程序

    1. 什么叫.net平台 .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境..NET框架的目的是便于开发人员更容易地建立Web应用程序和Web服务,使得Internet上的 ...

  9. 科学家用AI看月球后,却发现了这些东西

    ​​人工智能(AI)几乎已经无所不在,我们生活的大多数方面都已经被它们渗透,随着AI在过去几年取得的令人震惊的进步,它在许多方面都可能帮助我们的生活变得更美好.近日,AI在月球上发现了近7000个未被 ...

  10. Docker For Mac 下安装 Rancher

    https://www.jianshu.com/p/5fb3e1a998d6 Docker For Mac 下安装 Rancher 原文:如何在 OS X 上安装 Rancher Rancher 是 ...