您的位置:首页 > Web前端 > JavaScript

Javascript应用--任你摆布的图片展示效果(图片名换成你自己的)

2010-12-28 18:41 549 查看
Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  

<html>  

<head>  

<title>3</title>  

<style type="text/css">  

    html {   
        overflow: hidden;   
    }   
  
    body {   
        margin: 0px;   
        padding: 0px;   
        background: #000;   
        position: absolute;   
        width: 100%;   
        height: 100%;   
        cursor: crosshair;   
    }   
  
    #diapoContainer {   
        position: absolute;   
        left: 10%;   
        top: 10%;   
        width: 80%;   
        height: 80%;   
        background: #222;   
        overflow: hidden;   
    }   
  
    .imgDC {   
        position: absolute;   
        cursor: pointer;   
        border: #000 solid 2px;   
        filter: alpha(opacity=90);   

        opacity: 0.9;   
        visibility: hidden;   
    }   
  
    .spaDC {   
        position: absolute;   
        filter: alpha(opacity=20);   

        opacity: 0.2;   
        background: #000;   
        visibility: hidden;   
    }   
  
    .imgsrc {   
        position: absolute;   
        width: 120px;   
        height: 67px;   
        visibility: hidden;   
        margin: 4%;   
    }   
  
    #bkgcaption {   
        position: absolute;   
        bottom: 0px;   
        left: 0px;   
        width: 100%;   
        height: 6%;   
        background:#1a1a1a;   
    }   
    #caption {   
        position: absolute;   
        font-family: arial, helvetica, verdana, sans-serif;   

        white-space: nowrap;   
        color: #fff;   
        bottom: 0px;   
        width: 100%;   
        left: -10000px;   
        text-align: center;   
    }   
  
</style>  

  
<script type="text/javascript">  

var xm;   
var ym;   
  
/* ==== onmousemove event ==== */   

document.onmousemove = function(e){   

    if(window.event) e=window.event;   

    xm = (e.x || e.clientX);   

    ym = (e.y || e.clientY);   

}   
  
/* ==== window resize ==== */   

function resize() {   
    if(diapo)diapo.resize();   
}   
onresize = resize;   

  
/* ==== opacity ==== */   

setOpacity = function(o, alpha){   

    if(o.filters)o.filters.alpha.opacity = alpha * 100; else o.style.opacity = alpha;   

}   
  
  
////////////////////////////////////////////////////////////////////////////////////////////   

/* ===== encapsulate script ==== */   

diapo = {   

    O : [],   
    DC : 0,   
    img : 0,   
    txt : 0,   
    N : 0,   
    xm : 0,   
    ym : 0,   
    nx : 0,   
    ny : 0,   
    nw : 0,   
    nh : 0,   
    rs : 0,   
    rsB : 0,   
    zo : 0,   
    tx_pos : 0,   
    tx_var : 0,   
    tx_target : 0,   
  
    /////// script parameters ////////   
    attraction : 2,   
    acceleration : .9,   
    dampening : .1,   
    zoomOver : 2,   
    zoomClick : 6,   
    transparency : .8,   
    font_size: 18,   
    //////////////////////////////////   
  
    /* ==== diapo resize ==== */   

    resize : function(){   
        with(this){   
            nx = DC.offsetLeft;   

            ny = DC.offsetTop;   

            nw = DC.offsetWidth;   

            nh = DC.offsetHeight;   

            txt.style.fontSize = Math.round(nh / font_size) + "px";   

            if(Math.abs(rs-rsB)<100) for(var i=0; i<N; i++) O[i].resize();
  
            rsrsB = rs;   

        }   
    },   
  
    /* ==== create diapo ==== */   

    CDiapo : function(o){   
        /* ==== init variables ==== */   

        this.o        = o;   

        thisthis.x_pos    = this.y_pos    = 0;   

        thisthis.x_origin = this.y_origin = 0;   

        thisthis.x_var    = this.y_var    = 0;   

        thisthis.x_target = this.y_target = 0;   

        thisthis.w_pos    = this.h_pos    = 0;   

        thisthis.w_origin = this.h_origin = 0;   

        thisthis.w_var    = this.h_var    = 0;   

        thisthis.w_target = this.h_target = 0;   

        this.over     = false;   

        this.click    = false;   

  
        /* ==== create shadow ==== */   

        this.spa = document.createElement("span");   

        this.spa.className = "spaDC";   

        diapo.DC.appendChild(this.spa);   
  
        /* ==== create thumbnail image ==== */   

        this.img = document.createElement("img");   

        this.img.className = "imgDC";   

        this.img.src = o.src;   

        thisthis.img.O = this;   

        diapo.DC.appendChild(this.img);   
        setOpacity(this.img, diapo.transparency);   

  
        /* ==== mouse events ==== */   

        this.img.onselectstart = new Function("return false;");   

        this.img.ondrag = new Function("return false;");   

        this.img.onmouseover = function(){   

            diapo.tx_target=0;   

            diapo.txt.innerHTML=this.O.o.alt;   

            this.O.over=true;   

            setOpacity(this,this.O.click?diapo.transparency:1);   

        }   
        this.img.onmouseout = function(){   

            diapo.tx_target=-diapo.nw;   

            this.O.over=false;   

            setOpacity(this,diapo.transparency);   
        }   
        this.img.onclick = function() {   

            if(!this.O.click){   
                if(diapo.zo && diapo.zo != this) diapo.zo.onclick();   

                this.O.click = true;   

                this.O.x_origin = (diapo.nw - (this.O.w_origin * diapo.zoomClick)) / 2;   

                this.O.y_origin = (diapo.nh - (this.O.h_origin * diapo.zoomClick)) / 2;   

                diapo.zo = this;   

                setOpacity(this,diapo.transparency);   
            } else {   
                this.O.click = false;   

                this.O.over = false;   

                this.O.resize();   
                diapo.zo = 0;   

            }   
        }   
  
        /* ==== rearrange thumbnails based on "imgsrc" images position ==== */   

        this.resize = function (){   

            with (this) {   
                x_origin = o.offsetLeft;   

                y_origin = o.offsetTop;   

                w_origin = o.offsetWidth;   

                h_origin = o.offsetHeight;   

            }   
        }   
  
        /* ==== animation function ==== */   

        this.position = function (){   

            with (this) {   
                /* ==== set target position ==== */   

                w_target = w_origin;   

                h_target = h_origin;   

                if(over){   
                    /* ==== mouse over ==== */   

                    w_target = w_origin * diapo.zoomOver;   

                    h_target = h_origin * diapo.zoomOver;   

                    x_target = diapo.xm - w_pos / 2 - (diapo.xm - (x_origin + w_pos / 2)) / (diapo.attraction*(click?10:1));   

                    y_target = diapo.ym - h_pos / 2 - (diapo.ym - (y_origin + h_pos / 2)) / (diapo.attraction*(click?10:1));   

                } else {   
                    /* ==== mouse out ==== */   

                    x_target = x_origin;   

                    y_target = y_origin;   

                }   
                if(click){   
                    /* ==== clicked ==== */   

                    w_target = w_origin * diapo.zoomClick;   

                    h_target = h_origin * diapo.zoomClick;   

                }   
  
                /* ==== magic spring equations ==== */   

                x_pos += x_varx_var = x_var * diapo.acceleration + (x_target - x_pos) * diapo.dampening;   

                y_pos += y_vary_var = y_var * diapo.acceleration + (y_target - y_pos) * diapo.dampening;   

                w_pos += w_varw_var = w_var * (diapo.acceleration * .5) + (w_target - w_pos) * (diapo.dampening * .5);   

                h_pos += h_varh_var = h_var * (diapo.acceleration * .5) + (h_target - h_pos) * (diapo.dampening * .5);   

                diapo.rs += (Math.abs(x_var) + Math.abs(y_var));   

  
                /* ==== html animation ==== */   

                with(img.style){   
                    left   = Math.round(x_pos) + "px";   

                    top    = Math.round(y_pos) + "px";   

                    width  = Math.round(Math.max(0, w_pos)) + "px";   

                    height = Math.round(Math.max(0, h_pos)) + "px";   

                    zIndex = Math.round(w_pos);   

                }   
                with(spa.style){   
                    left   = Math.round(x_pos + w_pos * .1) + "px";   

                    top    = Math.round(y_pos + h_pos * .1) + "px";   

                    width  = Math.round(Math.max(0, w_pos * 1.1)) + "px";   

                    height = Math.round(Math.max(0, h_pos * 1.1)) + "px";   

                    zIndex = Math.round(w_pos);   

                }   
            }   
        }   
    },   
  
    /* ==== main loop ==== */   

    run : function(){   
        diapo.xm = xm - diapo.nx;   

        diapo.ym = ym - diapo.ny;   

        /* ==== caption anim ==== */   

        diapo.tx_pos += diapodiapo.tx_var = diapo.tx_var * .9 + (diapo.tx_target - diapo.tx_pos) * .02;   

        diapo.txt.style.left = Math.round(diapo.tx_pos) + "px";   

        /* ==== images anim ==== */   

        for(var i in diapo.O) diapo.O[i].position();   
        /* ==== loop ==== */   

        setTimeout("diapo.run();", 16);   
    },   
  
    /* ==== load images ==== */   

    images_load : function(){   
        // ===== loop until all images are loaded =====   

        var M = 0;   

        for(var i=0; i<diapo.N; i++) {   

            if(diapo.img[i].complete) {   
                diapo.img[i].style.position = "relative";   

                diapo.O[i].img.style.visibility = "visible";   

                diapo.O[i].spa.style.visibility = "visible";   

                M++;   
            }   
            resize();   
        }   
        if(M<diapo.N) setTimeout("diapo.images_load();", 128);   

    },   
  
    /* ==== init script ==== */   

    init : function() {   
        diapo.DC = document.getElementById("diapoContainer");   

        diapodiapo.img = diapo.DC.getElementsByTagName("img");   

        diapo.txt = document.getElementById("caption");   

        diapodiapo.N = diapo.img.length;   

        for(i=0; i<diapo.N; i++) diapo.O.push(new diapo.CDiapo(diapo.img[i]));
  
        diapo.resize();   
        diapo.tx_pos = -diapo.nw;   

        diapo.tx_target = -diapo.nw;   

        diapo.images_load();   
        diapo.run();   
    }   
}   
  
</script>  

</head>  

  
<body>  

  
<div id="diapoContainer">  

  
    <img class="imgsrc" src="conspiracy_21.jpg" alt="Reconsider your Existence">  

    <img class="imgsrc" src="conspiracy_22.jpg" alt="Something Needs to be Discovered">  

    <img class="imgsrc" src="conspiracy_24.jpg" alt="They Said Very Little">  

    <img class="imgsrc" src="conspiracy_26.jpg" alt="Only in Your Mind">  

    <img class="imgsrc" src="conspiracy_32.jpg" alt="The Power of Imagination">  

    <img class="imgsrc" src="conspiracy_29.jpg" alt="Objectivity is Impossible">  

    <img class="imgsrc" src="conspiracy_31.jpg" alt="Cleaning Up Operation">  

    <img class="imgsrc" src="conspiracy_17.jpg" alt="Arbitrary Contents">  

  
    <div id="bkgcaption"></div>  

    <div id="caption"></div>  

  
</div>  

  
<script type="text/javascript">  

/* ==== start script ==== */   

function dom_onload() {   
    if(document.getElementById("diapoContainer")) diapo.init(); else setTimeout("dom_onload();", 128);   

}   
dom_onload();   
</script>  

  
</body>  

</html>  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息