zoukankan      html  css  js  c++  java
  • 轮播图—运动框架来实现(拥有透明度效果)


    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    *{
    padding:0;
    margin: 0;
    list-style: none;
    }
    #wrap{
    590px;
    height:340px;
    border:1px solid #000;
    margin: 50px auto;
    position: relative;
    }
    #wrap a{
    30px;
    height: 30px;
    line-height: 30px;
    background: #000;
    opacity: 0.3;
    filter: alpha(opacity=30);
    text-align: center;
    text-decoration: none;
    color:#fff;
    font-size: 16px;
    position: absolute;
    top: 150px;
    }
    #wrap #prev{
    left:0;
    }
    #wrap #next{
    right:0;
    }
    #wrap ol{
    position: absolute;
    bottom:10px;
    left:50%;
    margin-left: -50px;
    }
    #wrap ol li{
    15px;
    height:15px;
    border-radius: 50%;
    float: left;
    margin-left: 5px;
    background: #fff;
    }
    #wrap ol li.active{
    background: red;
    }
    #wrap ul{
    590px;
    height:auto;
    position: absolute;
    left:0;
    }
    #wrap ul li{
    590px;
    height:340px;
    position: absolute;
    top:0;
    left:0;
    }
    </style>
    </head>
    <body>
    <div id="wrap">
    <ul id="box">
    <li><img src="img/1.jpg" alt=""/></li>
    <li><img src="img/2.jpg" alt=""/></li>
    <li><img src="img/3.jpg" alt=""/></li>
    <li><img src="img/4.jpg" alt=""/></li>
    <li><img src="img/5.jpg" alt=""/></li>
    </ul>
    <a id="prev" href="javascript:;">←</a>
    <a id="next" href="javascript:;">→</a>
    <ol id="btn">
    <li class="active"></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    </ol>
    </div>
    </body>
    </html>
    //这里引用了一个封装好的运动框架
    <script src="move1.js"></script>
    <script>
    window.onload=function(){
    var wrap=document.getElementById("wrap");
    var box=document.getElementById("box");
    var aLi=box.getElementsByTagName("li");
    var aBtn=document.getElementById("btn").getElementsByTagName("li");
    var next=document.getElementById("next");
    var prev=document.getElementById("prev");
    var timer=null;
    var iNow=0;

    function demo(){
    for(var i=0;i<aBtn.length;i++){
    aBtn[i].className='';
    move(aLi[i],{opacity:0});
    }
    move(aLi[iNow],{opacity:1});
    aBtn[iNow].className="active";
    }
    for(var i=0;i<aBtn.length;i++){
    aBtn[i].index=i;
    aBtn[i].onclick=function(){
    iNow=this.index;
    demo();
    }
    }
    next.onclick=oNext;
    function oNext(){
    iNow++;
    if(iNow==aLi.length)
    iNow=0;
    demo();
    }
    prev.onclick=function(){
    iNow--;
    if(iNow==-1)
    iNow=aLi.length-1;
    demo();
    };
    timer=setInterval(oNext,2000);

    wrap.onmouseover=function(){
    clearInterval(timer);
    };
    wrap.onmouseout=function(){
    timer=setInterval(oNext,2000);
    }
    }
    </script>

    //js封装库
    function getStyle(obj,name){
    if(obj.currentStyle){
    return obj.currentStyle[name];
    }else{
    return getComputedStyle(obj,false)[name];
    }
    }
    //complete-->{}:{time:500,ease:ease-in,fn:}
    function move(obj,json,complete){
    clearInterval(obj.timer);
    complete=complete || {};
    complete.time=complete.time || 1000;
    complete.ease=complete.ease || "linear";
    var start={}; //开始的位置
    var dis={}; //距离

    for(var name in json){
    start[name]=parseFloat(getStyle(obj,name)); //开始的位置
    dis[name]=json[name]-start[name]; //距离
    }

    var count=Math.floor(complete.time/30); //次数
    var n=0; //当前的的次数
    obj.timer=setInterval(function(){
    n++;
    for(var name in json){
    switch (complete.ease){
    case "linear": //匀速
    var a=n/count;
    var cur=start[name] + dis[name]*a;
    break;
    case 'ease-in': //加速
    var a=n/count;
    var cur=start[name] + dis[name]*a * a * a;
    break;
    case 'ease-out': //减速
    var a=1-n/count;
    var cur=start[name] + dis[name]*(1-a * a * a);
    break;
    }

    if(name=="opacity"){ //透明度
    obj.style.opacity=cur;
    obj.style.filter="alpha(opacity:"+cur*100+")";
    }else{
    obj.style[name]=cur + "px";
    }
    }
    if(n==count){
    clearInterval(obj.timer);
    complete.fn && complete.fn();
    }
    },30)
    }
  • 相关阅读:
    MVC常见问题小总结
    IIS 7的备份与恢复
    [译]Professional ASP.NET MVC3(03) Chapter 1:Getting Started(下)
    跟小静读CLR via C#(18)——Enum
    跟小静读CLR via C#(17)接口
    跟小静学MVC3[02]从注册模块实战MVC新特性
    高性能网站14条——读《高性能网站建设指南》
    [译]Professional ASP.NET MVC3(02) Chapter 1:Getting Started(中)
    [译]Professional ASP.NET MVC3(01)Chapter 1:Getting Started(上)
    从零开始MVC3—Music Store实例&Controller
  • 原文地址:https://www.cnblogs.com/wangqiniqn/p/6200783.html
Copyright © 2011-2022 走看看