zoukankan      html  css  js  c++  java
  • html轮播效果的实现

    要实现如下图的效果

    点击可以选择图片;不点击的时候自动轮播;并且点击完后再次自动轮播。

    思路:如同在房子里透过窗子看路过的火车一样,窗子是不动的,但火车是陆续经过窗子的,所以透过窗子可以看到依次看完所有的火车。

    1. 让将图片排成一列“火车”:ul中li(li中放着轮播图片)漂浮起来后,就排列成一溜了

    2. 要有一个“窗口”,把“火车”放到“窗口”里:设置div的固定长度,使它宽度等于ul中一个li的宽度

    3. 让“火车”动起来:利用margin-left样式可以选择要在“窗口”显示的图片。

    代码如下:

    <!DOCTYPE html>
    <html>
    <head>
    <title>图片轮播效果</title>
    <link rel="stylesheet" type="text/css" href="./css/reset.css" />
    <style>
    .container{
        width:100%;
        margin:0 auto;
    }
    /* 轮播容器 */
    .img_wrap{
        width:440px;
        height:440px;
        margin:0 auto;
        position:relative;
    }
    .img_wrap ul li{
        float:left;
    }
    /* 轮播索引 */
    .img_wrap .img_index{
        position:absolute;
        right:20px;
        bottom:20px;
    }
    .img_wrap .img_index ul li{
        width:16px;
        height:16px;
        background:gray;
        border-radius:8px;
        cursor:pointer;
        margin-right:4px;
    }
    .img_wrap .img_index ul li.on{
        background:#fd4b4b;    
    }
    /* 轮播图片容器 */
    .img_wrap .img_lunbo{
        width:440px;
        height:440px;
        overflow:hidden;
    
    }
    </style>
    
    <script>
    window.onload = function(){
        var currentIndex = 1; //当前索引
        var time = 2000; //时间间隔
        var length = 5; //几个索引
        var timer = null; //定时器
        indexBindClick();
        //自动轮播
        autoPlay();
        
        //给索引绑定事件
        function indexBindClick(){
            var lis = document.getElementsByClassName("img_index")[0].getElementsByTagName("li");
            for(var i=0; i<lis.length; i++){
                lis[i].onclick = function(){
                    //换图片显示
                    currentIndex = getIndex(this);
                    clearInterval(timer);
                    showImg();
                    autoPlay();
                };
            }
        }
        function autoPlay(){
            timer = setInterval(function(){
                showImg();
                currentIndex++;
            },time);
        }
        //显示图片
        function showImg(){
            if(currentIndex >= 5){
                currentIndex = 0;
            }
            //改变小图标样式
            var lis = document.getElementsByClassName("img_index")[0].getElementsByTagName("li");
            for(var j=0; j<lis.length; j++){
                lis[j].className = "";
            }
            lis[currentIndex].className = "on";
    
            //显示当前图片
            var ul = document.getElementsByClassName("img_lunbo")[0].getElementsByTagName("ul")[0];
            var li_width = ul.getElementsByTagName("li")[0].scrollWidth;
            var marginLeft = -currentIndex * li_width;
            ul.style.marginLeft = marginLeft + "px";
        }
        
        /* 获取对象在父节点中索引 */
        function getIndex(obj){
            var children = obj.parentNode.children;
            for(var i=0; i<children.length; i++){
                if(children[i] == obj){
                    return i;
                }
            }
        }
    };
    </script>
    </head>
    
    <body>
    <div class="container">
    <div class="img_wrap">
        <div class="img_index">
            <ul>
                <li class="on"></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
        </div>
        <div class="img_lunbo">
            <ul>
                <li><img src="./images/lunbo1.jpg" /></li>
                <li><img src="./images/lunbo2.jpg" /></li>
                <li><img src="./images/lunbo3.jpg" /></li>
                <li><img src="./images/lunbo4.jpg" /></li>
                <li><img src="./images/lunbo5.jpg" /></li>
            </ul>
        </div>
    </div>
    </div>
    </body>
    </html>

    reset.css初始化代码和图片要自己准备。

  • 相关阅读:
    Samba文件服务器详细配置步骤
    chkconfig命令详解
    rdesktop的使用方法
    CentOs中yum安装LAMP+PHPMYADMIN
    YUM源
    Centos下设置VNC为3389端口
    vnc服务的安装与配置
    rdesktop的使用
    nginx 日志分割
    程序员私活网汇总
  • 原文地址:https://www.cnblogs.com/lhat/p/4808140.html
Copyright © 2011-2022 走看看