超详细轮播图,让你彻底明白轮播图!

  刚开始学JavaScript时候很多新手都会尝试写一些简单的小项目,轮播图应该是写的最多的。但是很多时候对于基础不是很好的新手,虽然参照别人的代码能写出来一些轮播图,但其中的一些细节和过程可能还是一知半解甚至不懂,我作为一个新手刚刚写了几种常见的轮播图,里面的各种细节也花了不少时间弄懂,这里为大家介绍一种简单易懂且很完善的轮播图写法。里面的细节我会一一详细说明,希望和各位初入JavaScript的小伙伴一起进步。

  轮播图的思路其实很简单:就是用JavaScript来控制轮播的图片的样式,可以控制display:none or block 可以控制opacity:‘0’ or ‘1’ 也可以通过z-index来控制图片的摆放顺序。(注意:这里的图片一般是通过绝对定位放在一个div盒子里面,图片堆叠在一起)。思路很清晰,那么我们就来看看代码(代码是本人自己手写的)。具体细节我会在代码中一一解释:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        #main{
            width: 730px;
            height: 454px;
            margin: 100px auto;
            position: relative;

        }
        #main .scollimg{
            width: 730px;
            height: 454px;
            position: relative;
        }
        #main .scollimg img{
            position: absolute;
            top: 0;
            left: 0;
        }
        #main .btn{
            width: 730px;
            height: 220px;
            position: absolute;
            top:117px;
            left: 0;
        }
        #main .btn>div{
            width: 100px;
            height: 220px;
            background: #fff;
            opacity: 0;
        }
        #main .btn:hover>div{
            opacity: 0.35;
        }
        #main .btn #btnleft{
            position: absolute;
            top: 0;
            left: 0;
        }
        #main .btn #btnright{
            position: absolute;
            top: 0;
            right:0;
        }
        /*左右button里的三角形*/
        .triangle{
             margin-top: 50px;
            width: 0;
            height: 0;
            border-width:70px 40px;
            border-style: solid;
        }

        #main .btn #btnleft .triangle{
            border-color: transparent #ccc transparent  transparent;
        }
        #main .btn #btnright .triangle{
            margin-left: 20px;
            border-color: transparent transparent transparent #ccc;
        }
        #main .item{
            position: absolute;
            bottom: 30px;
            left: 70px;
            width: 200px;
            height: 16px;
        }
        #main .item span{
            width: 16px;
            height: 16px;
            background: #ccc;
            display: inline-block;
            border-radius: 50%;
        }
        #main .item span:hover{
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="main">
        <div class="scollimg">
            <img src="images/1.jpg" >
            <img src="images/2.jpg" >
            <img src="images/3.jpg" >
        </div>
        <div class="btn">
            <div id="btnleft"><div class="triangle"></div></div>
            <div id="btnright"><div class="triangle"></div></div>
        </div>
        <div class="item">
            <span></span>
            <span></span>
            <span></span>
        </div>
    </div>
    <script type="text/javascript">
        window.onload=function(){
            autoMove(‘img‘,‘span‘);
        }

        //轮播图函数
        function autoMove(tagImg,tagSpan){
            var imgs=document.getElementsByTagName(tagImg);
            var spans=document.getElementsByTagName(tagSpan);
            //每次轮播后样式
            /*轮播到哪个位置,就对哪个位置的图片样式进行设置,首先让所有的图片样式opacity变为0,然后对移动到的位置的样式进行设置opacity为1*/
            function InitMove(index){
                for(var i=0;i<imgs.length;i++){
                    imgs[i].style.opacity=‘0‘;
                    spans[i].style.background=‘#ccc‘;
                }
                imgs[index].style.opacity=‘1‘;
                spans[index].style.background=‘red‘;
            }
            //第一次初始化
            InitMove(0);
            //轮播过程的变换函数
            /*前面已经初始化了图片最开始看到的效果,接着轮播的话会隐藏第一张出现第二张
             *这里count从1开始(图片的初始化位置是count为0的情况),count=1执行一次Init*Move(count),使第一张隐藏第二张出现,依次执行。当count==imgs.leghth时由于*图片最后一张的位置是imgs.length-1,所以此时把count置为0;相当于轮播图轮回
             *依次重新开始。
             */
            var count=1;
            function fMove(){
                if(count==imgs.length){
                    count=0;
                }
                InitMove(count);
                count++;
            }
            //设置自动轮播定时器;
            var scollMove=setInterval(fMove,2500);

            //点击移动图片;
            /*这里就是点击左右移动的button来让图片根据用户的点击左右移动;需要注意一点就*是每次点击左移动或右移动需要首先清除定时器,等移动完了在重新添加定时器不然的*话你点击移动后图片虽然该变了,但是由于定时器还没移动到这张图片上面,所以就需*要等待定时器移动到你移动到的那张图片上面让后才开始定时轮播。比如如果你从开始
            *就点击移动图片,一直移动到最后一张那么你就要等待两个定时器的时间才能看到自动*轮播。
            */
            var btnleft=document.getElementById(‘btnleft‘);
            var btnright=document.getElementById(‘btnright‘);
            btnleft.onclick=function(){
                clearInterval(scollMove);
                if(count==0){
                    count=imgs.length;
                }
                count--;
                InitMove(count);
                scollMove=setInterval(fMove,2500);
            };
            btnright.onclick=function(){
                clearInterval(scollMove);
                fMove();
                scollMove=setInterval(fMove,2500);
            }
        }

    </script>
</body>
</html>

  这就是最基本的轮播图,效果基本没有什么问题。通用性强。

  

最终效果:

时间: 2024-10-15 17:43:02

超详细轮播图,让你彻底明白轮播图!的相关文章

jquery特效(3)—轮播图①(手动点击轮播)

今天上班做设计做的头疼,就写了一个轮播图练练手,先写了一个手动点击轮播的轮播图,随后我会慢慢接着深入写自动轮播图和鼠标悬浮图片停止移动轮播图等~~~~~~虽然今天我生日,但是代码还是得写的,不能找借口放松自己,原地踏步也算后退~~~~ 下面来看看最终做的手动点击轮播效果: 哈哈哈,有没有看出来我的四张图片都是美男子哦~~~~找个赏心悦目的图片真不容易,这样才能激起我写轮播图的代码欲望,写出来就可以点击按钮翻他们牌子了~~~~ 一.原理说明 (1)首先是轮播图的架构,我采用了一个最外边的大div包

mac下idea的使用之svn篇--有图超详细

mac下idea的使用之svn篇--有图超详细 博客分类: idea svn 记一下idea的svn使用有图超详细 根据在eclipse里使用svn的经验琢磨了一下idea,现把idea下svn的使用方法记录如下 主要分为几个功能来介绍 第一个功能当然是把远程的svn代码拉到我们本地 下面的多出了一个svn的窗口,在左边有加号可以添加一个svn的库 输入svn的地址,我用的是本地的测试,所以地址为svn://127.0.0.1/newproject 根据服务不同这个地址也不一样 可能是http或

思维导图不会画?超详细教程讲解,小白也能变高手

思维导图可以让复杂的问题变得简单,简单的可以在一张白纸上画下来,让人一看就明白问题的全部,思维导图可以把人们看不见.摸不着的想法展现出来,学习者可以用思维导图将自己记录的知识记下来,进而进行反复思考与总结.很多人在绘制思维导图的时候都说思维导图很难绘制,花了很长时间绘制出来的却很难看,不好意思拿出来,是这样的吗?下面小编将绘制思维导图的方法分享给大家.继续往下看. 使用工具:迅捷画图 工具介绍:迅捷画图是一个在线网站,可以在线绘制各种思维导图.流程图等多种图形的工具,画好的图可在线保存分享与导出

IntelliJ IDEA 12 创建Web项目 教程 超详细版

原文:IntelliJ IDEA 12 创建Web项目 教程 超详细版 IntelliJ IDEA 12 新版本发布 第一时间去官网看了下  黑色的主题 很给力 大体使用了下  对于一开始就是用eclipse的童鞋们 估计很难从eclipse中走出来 当然 我也很艰难的走在路上 ... 首先要说一点,在IntelliJ IDEA里面“new Project” 就相当于我们eclipse的“workspace”,而“new Module”才是创建一个工程. 这个和Eclipse有很大的区别 1.官

Oracle11超详细安装教程和配置

这篇博客主要是介绍一下Oracle数据的安装过程和简单的配置,帮助大家可以简单的让Oracle运行起来,只是一个基础的教程. 准备工作: 如果你以前装过Oracle数据库,而且安装目录要改变请先打开注册表编辑器里的: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Oracle11和它下面的几个.如果你没安装过Oracle产品的话在注册表里面的与Oracle有关的注册

IntelliJ IDEA 12 创建Web项目 教程 超详细版(转)

IntelliJ IDEA 12 新版本发布 第一时间去官网看了下  黑色的主题 很给力 大体使用了下  对于一开始就是用eclipse的童鞋们 估计很难从eclipse中走出来 当然 我也很艰难的走在路上 ... 首先要说一点,在IntelliJ IDEA里面“new Project” 就相当于我们eclipse的“workspace”,而“new Module”才是创建一个工程. 这个和Eclipse有很大的区别 1.官网下载下来的默认不是黑色的主题 这里需要修改一下 工具栏上的扳手图标 或

安装64位Oracle 10g超详细教程

安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连接,本例使用的所有命令和操作都是在X-Manager下进行.X-Manager安装完成后的配置方法如下: 1.  打开X-Manager的X-Shell 2. 点击New,新建一个连接地址,设置完成后,点击OK3.  使用用户名,密码进行登录,登录完成后,进入如下图所示画面即成功连接到Linux系统

Ubuntu-安装-cuda7.0-单显卡-超详细教程

欢迎访问 博客新址 一.说明 本教程是在台式机上安装的,只有一个NVIDIA显卡. 操作系统是Ubuntu 14.04 (64bit). 双显卡的笔记本请移步Ubuntu-安装-cuda7.0-双显卡-超详细教程 二.准备 说明:本文假设下载的文件都在~/Dowloads/下面 1. 更新操作系统 sudo apt-get update 2. 下载cuda7.0 点此下载 如果不是该版本,可以搜索,如下图所示: 点击"Linux x86",选择"Ubuntu 14.04&qu

超详细的php用户注册页面填写信息完整实例(附源码)

这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要对自己的注册页面做些精心的设计.下面三张图,第一张是注册的展示页面,第二张思维导图就一个简单的逻辑,第三张是通过firebug查看调用的JS文件. 一.给每个输入框写下说明 在用户看到这个输入框的时候,就能非常清晰的明白这个输入框是做啥用的,最大限度的降低他们产生疑惑的可能性.我们需要假设用户毫不了

Github上传代码菜鸟超详细教程【转】

最近需要将课设代码上传到Github上,之前只是用来fork别人的代码. 这篇文章写得是windows下的使用方法. 第一步:创建Github新账户 第二步:新建仓库 第三部:填写名称,简介(可选),勾选Initialize this repository with a README选项,这是自动创建REAMDE.md文件,省的你再创建. 第四步:安装Github shell程序,地址:http://windows.github.com/ 第五步:打开Git Shell,输入以下命令生成密钥来验