javascript简单轮播图
**轮播图实现原理:
   通过多张图片平铺,用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"><</a>
            <a href="#" id="next">></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简单轮播图的更多相关文章
- JavaScript焦点轮播图
		
在慕课学习了JavaScript焦点轮播图特效,在此做一个整理. 首先是html结构,我用的是本地同文件夹下的三张图片,多出来的第一张(pic3副本)和最后一张图片(pic1副本)是为了实现无缝切换效 ...
 - JS---案例:简单轮播图
		
案例:简单轮播图 div叫盒子,里面包了2个小盒子,一个是inner,一个是square inner的div是放ul,里面有li,a,和图片 square的div里面放span,是轮播图的小点 < ...
 - HTML+CSS+Javascript实现轮播图效果
		
HTML+CSS+Javascript实现轮播图效果 注意:根据自己图片大小来更改轮播图大小. <!doctype html> <html> <head> < ...
 - JavaScript实现简单轮播图动画
		
运行效果: 源代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&quo ...
 - 手把手原生js简单轮播图
		
在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用 ...
 - (新手向)基于Bootstrap的简单轮播图的手机实现
		
个人电脑里存了不少适合手机欣赏的图片,但是放手机里看是件很占据资源的事.鉴于家里有一台电脑经常开着,正好用来做家庭局域网共享,于是笔者就设想通过一种比较简单环保的思路.通过手机访问电脑内的图片. 首先 ...
 - js写的简单轮播图
		
这个轮播图代码是从网上找来的,专门找了个写法简单的,只是作为一个小练习,大概原理如下: 1.首先是图片切换2.自动播放3.调用自动播放4.移动到容器上边停止播放,离开自动播放5.移动到导航上停止播放, ...
 - 原生js简单轮播图 代码
		
在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用 ...
 - 原生javascript焦点轮播图
		
刚刚学会,写了一个轮播图效果,不过bug蛮多,请高手指点一下,谢谢 <!DOCTYPE html> <html> <head> <meta charset=& ...
 
随机推荐
- PAT甲级——1002 A+B for Polynomials
			
PATA1002 A+B for Polynomials This time, you are supposed to find A+B where A and B are two polynomia ...
 - linux压缩管理系统
			
Linux压缩管理系统windows rar zipLinux zip tar.gz tar.bz2 tar.xz 压缩的好 ...
 - Listening-lecture|主旨题|术语解释|举例原则|Crash course 哔哩哔哩
			
Listening-lecture: Major topic: SP1---detail---detail---detail SP2---detail---detail---detail Crash ...
 - linux的nohup命令的用法(后台运行程序命令)
			
linux的nohup命令的用法. 在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/ ...
 - Navicat 12 无限期试用
			
最近发现navicat12又过期了,以前的是用的破解软件,然后是到1899年过期哈哈哈哈哈哈.重装了系统后,软件也重装了,发现破解软件不好使了,就先试用了,现在到期了.很是难受,这可咋整,不过在网上看 ...
 - sqlserver 查询各个学生语文、数学、英语、历史课程成绩
			
-- 建表 插入数据 USE 你自己的数据库; CREATE TABLE Member( MID ) PRIMARY KEY, MName ) ); CREATE TABLE Course( FID ...
 - python 入门手册
			
python 入门手册 Introduction 这个手册是为了让学习者好好的重塑对于编程的认识,我们要来认识到怎么来在陌生的领域学习,学习的技巧开始,通过官方文档来学习 开端 利用IDE输出&quo ...
 - [Python] 使用Python 3 下载麦子学院视频
			
本文基于Python 3,下载麦子学院的视频课程. 本项目只是针对某个具体课程的链接,去寻找该课程所有课时的视频链接并进行下载. 整个项目是非常简单的. 主要涉及的Python: 网络相关:reque ...
 - POJ3264 Balanced Lineup  [RMQ模板]
			
题意:有n头牛,输入他们的身高,求某区间身高的极值的差(max-min), 用RMQ模板,同时构造求极大值和极小值的两个数组. //poj3264 #include <iostream> ...
 - [LC] 303. Range Sum Query - Immutable
			
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...