zoukankan      html  css  js  c++  java
  • 简单轮播图案例

      使用封装动画函数的方式实现简单的轮播图

      代码如下:

      Html代码

    <div class="box" id="box">
        <div id="inner">
            <ul>
                <li><a href="#"><img src="images/11.jpg" alt=""></a></li>
                <li><a href="#"><img src="images/12.jpg" alt=""></a></li>
                <li><a href="#"><img src="images/13.jpg" alt=""></a></li>
                <li><a href="#"><img src="images/14.jpg" alt=""></a></li>
                <li><a href="#"><img src="images/15.jpg" alt=""></a></li>
            </ul>
            <div id="squar">
                <span class="current">1</span>
                <span>2</span>
                <span>3</span>
                <span>4</span>
                <span>5</span>
            </div>
        </div>
    </div>
    

      Css样式

     1 * {
     2             margin: 0;
     3             padding: 0;
     4         }
     5         img {
     6             500px;
     7         }
     8         #inner {
     9              500px;
    10             height: 312.5px;
    11             position: relative;
    12             margin: 200px auto;
    13             /*background-color: pink;*/
    14             border: 1px solid pink;
    15             overflow: hidden;
    16         }
    17         ul {
    18              2500px;
    19             position:absolute;/*必须有相对定位,相对于div,否则不会移动*/
    20         }
    21         li {
    22             margin: auto;
    23             list-style: none;
    24             float: left;
    25         }
    26          #squar {
    27              119px;
    28             height: 20px;
    29             /*background-color: purple;*/
    30             /*z-index: 1;*/
    31             position:absolute;
    32             right: 10px;
    33             bottom: 10px;
    34         }
    35         span {
    36             display: inline-block;
    37              20px;
    38             height: 20px;
    39             background-color: #fff;
    40             line-height: 20px;
    41             text-align: center;
    42             cursor: pointer;
    43         }
    44         .current {
    45             background-color: orangered;
    46         }

    Javascript代码

     //获取最外层div
        var box=my$("box");
        //获取里面的子元素
        var inner=box.children[0];
        //获取inner的宽度
        var innerWidth=my$("inner").offsetWidth;
        //获取ul
        var ulObj=inner.children[0];
        //获取每个span标签
        var spanObj=inner.children[1].children;
        //为每个span注册鼠标划过事件
        for(var i=0;i<spanObj.length;i++){
            //循环时把索引保存在自定义属性中
            spanObj[i].setAttribute("index",i);
            spanObj[i].onmouseover=function (){
                //1.span背景颜色变化,即类样式的改变
                //先去掉样式
                for(var j=0;j<spanObj.length;j++){
                    spanObj[j].removeAttribute("class");
                }
                //再给当前事件的这个设置样式
                this.className="current";
    
                //2.图片滑动——移动ul,每个图片的宽*出现在inner中的span的索引
                var index=this.getAttribute("index");
                // console.log(ulObj);
                animate(ulObj,-index*innerWidth);
                // console.log(index*innerWidth);
    
    
    
            };
        }
    
        //封装动画函数
        function animate(element,target){
            //首先进来先清理掉定时器,这样无论点多少次按钮都只会有一个定时器
            clearInterval(element.timeId);
            element.timeId=setInterval(function (){//var timeId替换成element.timeId,相当于给了一个属性,这样就不会点一下按钮给定一块空间
                //获取div当前的位置
                var left=element.offsetLeft;
                //设置每步走的距离
                var step=9;
                step=left>target?-step:step;
                //得到移动后的位置
                left+=step;
                //设置目标位置
                //判断是否到达目标位置
                if(Math.abs(left-target)>Math.abs(step)){//不用left<=target,这样无法往回走,所以用Math.abs(left-target)>Math.abs(step)
                    element.style.left=left+"px";
                }else{
                    clearInterval(element.timeId);
                    element.style.left=target+"px";
                }
            },10);
        }
    

     总结:

      1、实现移动功能时,要移动的这个对象必须脱离文本流。

      2、使用var 变量,如果每执行一次事件就会分配一块内存,为了节省空间,可使用对象.属性的方式创建一个属性,这样无论执行多少次都只占一块内存空间。

  • 相关阅读:
    linq 基本用法
    string.Substring,string.Concat的用法
    用.NET提供的Mail来发邮件
    委比
    解决启动IIS发生意外错误 0x8ffe2740
    换手
    用Windows Live Writer 2009 发布测试的
    使用matlab工具研究神经网络的简单过程(网络和数据下载)
    拳皇2000连招表
    增加网页曝光率的秘诀
  • 原文地址:https://www.cnblogs.com/renyuqianxing/p/10320133.html
Copyright © 2011-2022 走看看