zoukankan      html  css  js  c++  java
  • 自己写的一个banner动画

    html

    <div class="nav" >
      <div class="nav_son" id="nav">
      <div class="nav_cont img_1">
        <div class="nav_img "><img src="images/001_03.png" width="472" height="315" /></div>
      </div>
        <div class="nav_cont img_2">
          <div class="nav_img "><img src="images/001_05.png" width="450" height="315" /></div>
        </div>
        <div class="nav_cont img_3">
          <div class="nav_img"><img src="images/banner1_01.png" width="700" height="315" /></div>
        </div>
        <div class="nav_cont img_4">
          <div class="nav_img"><img src="images/nav005_03.png" width="700" height="315" /></div>
        </div>
      </div>
      <div class="nav_but">
          <ul class="nav_but_ul" id="butUl">
            <li class="check">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
      </div>
    </div>

    css

    *{ margin:0; padding:0;}
    ul ,li { list-style:none;}
    .nav {
        height: 525px;
        width: 100%;
        position:relative;
        overflow:hidden;
        
    }
    .nav_cont {
        background-repeat: no-repeat;
        background-position: center top;
        position:absolute;
        top:0px;
        width:100%; height:100%;
        left:-100%;
    }
    
    .nav_son {width: 100%; height:100%; position:absolute;left:100%; }
    .img_1 { background-image:url(images/003_006bg.jpg)}
    .img_2 { background-image:url(images/003_005bg.jpg)}
    .img_3 { background-image:url(images/banner1.jpg)}
    .img_4 { background-image:url(images/nav005.jpg)}
    .nav_img { position:absolute; left:50%; margin-left:-600px; }
    .nav .nav_but {
        width: 100%;
        position: absolute;
        bottom: 10px;
        z-index:10;
    }
    .nav_but_ul { overflow:auto; width:120px; margin:0 auto;height: 20px;}
    .nav_but_ul li { float:left; width:14px; height:14px; background:url(images/1CdeO2mZF63.PNG); text-indent:-9999px; cursor:pointer; margin-right:5px ;background-position:-14px  0px;}
    .nav_but_ul li.check { background-position:0px  0px;}

    js

    var nav = document.getElementById("nav");
    var list = document.querySelectorAll("#nav>div");
    var nowNum = 0 ;
    var start = 4 ;
    var butList = document.querySelectorAll("#butUl>li");
    var timer = null; 
    window.onload = function (){
        list[nowNum].style.zIndex = 9 ;
        
        for (var i=0; i<butList.length;i++){
             butList[i].setAttribute("index",i);
            }
        isAddEvent(1);
        setTimeout(init,7000)
        } ;
    function func (e){
        e = e || window.event ;
        if(e.target){ var  ele =  e.target}
        else if (e.srcElement){
            var  ele  =  e.srcElement
            }
        var num = parseInt( ele.getAttribute("index"));
        
        init(num);
        }
    function init(num){
            if(num != null){
                goImg =num ;
                if (goImg == nowNum ){
                return ;
                }
            }
            else {
            goImg = nowNum+1 ; }
            if(goImg == 4){goImg= 0 ;}
            list[goImg].style.left = "0px";
            move(goImg);
            if(timer){clearTimeout(timer);timer = setTimeout(init,7000); }
            else {
                timer = setTimeout(init,7000);
                }
            
    }
    
    function  isAddEvent (isBut){
        
            for (var i=0; i<butList.length;i++){
            if(isBut){listenEvent(butList[i],"click",func);}
            else {stopListening(butList[i],"click",func);}
            }
        
    }
        
    
    function move (goImg){
        
        
        isAddEvent(0);
        this.goImg =  goImg;
        var sonImg = list[nowNum].getElementsByTagName("div")[0];
        var sonNowPos = GetCurrentStyle(sonImg,"left");
        var nex =  /%$/g ;
        var nowPosition = GetCurrentStyle(nav,"left");
        
        if(nex.test(sonNowPos)){
        sonNowPos = parseInt(sonNowPos)/100 * document.body.clientWidth;
        } else {  sonNowPos = parseInt(sonNowPos);}
        if(nex.test(nowPosition)){
        nowPosition =parseInt(nowPosition)/100 * document.body.clientWidth;
        } else {  nowPosition = parseInt(nowPosition);}
        //console.log(nowNum,goImg);
        var butList = document.querySelectorAll("#butUl>li");
        
        for (var i=0; i<butList.length;i++){butList[i].className = "" }
            butList[goImg].className = "check ";
        start*= 1.5 ;
        
        sonNowPos =Math.floor(sonNowPos-start);
        sonImg.style.left = sonNowPos+"px";
        time = setTimeout("move(this.goImg)",100);
        
        if(sonNowPos<300){
             
            nowPosition-=document.body.clientWidth/10;
            nav.style.left = nowPosition+"px";
            
            }
        console.log(nowPosition);
        if(nowPosition<=0){
            nav.style.left = "100%"
            sonImg.style.left = "50%";
            sonImg.removeAttribute("style");
            list[nowNum].style.zIndex = 0 ;
            list[nowNum].removeAttribute("style");
            list[goImg].removeAttribute("style");
            list[goImg].style.zIndex = 9 ;
            
            nowNum = goImg; 
            start=4;
            isAddEvent(1);
            clearTimeout(time);
            }
    }
    
    // 侦听
    function listenEvent(eventTarget,eventType,eventHandler){
        if(eventTarget.addEventListener){
            eventTarget.addEventListener(eventType,eventHandler)
            }
        else if (eventTarget.attachEvent){
            eventType = "on" +eventType ;
            eventTarget.attachEvent(eventType,eventHandler)
            }
        else {
            eventTarget["on"+eventType]=eventHandler;
            }
        }
    // 停止侦听
    function stopListening(eventTarget,eventType,eventHandler){
        if(eventTarget.removeEventListener){
            eventTarget.removeEventListener(eventType,eventHandler);
            }
        else if (eventTarget.detachEvent){
            eventType = "on" +eventType ;
            eventTarget.detachEvent(eventType,eventHandler);
            }
        else {
            eventTarget["on"+eventType]=null;
            }
        }
    
    //获得样式
    function GetCurrentStyle (obj, prop)
       {
          if (obj.currentStyle) //IE
          {
              return obj.currentStyle[prop];
          }
          else if (window.getComputedStyle) //非IE
          {
              propprop = prop.replace (/([A-Z])/g, "-$1");
              propprop = prop.toLowerCase ();
              return document.defaultView.getComputedStyle(obj,null)[propprop];
          }
         return null;
       }
    ps:可能有点小BUG,但是我目前看不出来哪里出问题了。求高手解决。
  • 相关阅读:
    Bootstrap 栅格系统的总结
    你真的了解font-weight吗?
    常用jquery
    ios 遮罩层,切换后内容滑动到最上方,并且不可点击
    Canvas与Image互相转换示例以及实现微信长按自动识别二维码功能
    解决手机上页面返回但是页面js没有刷新的痛点
    rem定义
    二维码转换格式
    bootstrap框架的基本使用
    响应式开发及其原理
  • 原文地址:https://www.cnblogs.com/xiaotian747/p/3600792.html
Copyright © 2011-2022 走看看