zoukankan      html  css  js  c++  java
  • CSS之动态相册

    注释还是比较详细的,所以我就不一一再说明了。--->运行效果图<--- (点击之前温馨提示一下:此picture是我自己的照片,本来不想拿出来的,后来觉得反正不会有很多人看到而且也没人认识我所以厚着脸皮还是摊了出来)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>AWFIDP</title>
     
    <style type="text/css">
        html {
            overflow: hidden;
        }
     
        body {
            margin: 0px;
            padding: 0px;
            background: #000;
            position: absolute;
             100%;
            height: 100%;
            cursor: crosshair;
             
        }
     
        #diapoContainer {
            position: absolute;
            left: 10%;
            top: 10%;
             80%;
            height: 80%;
            background: #222;      
        }
     
        .imgDC {
            position: absolute;
            cursor: pointer;
            border: #000 solid 2px;
            /* ==== 设置过滤器的透明度 ==== */
            filter: alpha(opacity=50);
            opacity: 0.9;
             
        }
     
        .spaDC {
            position: absolute;
            filter: alpha(opacity=20);
            opacity: 0.2;
            background: #000;
            visibility: hidden;
        }
     
        .imgsrc {
            position: absolute;
             300px;
            height: 350px;
            visibility: hidden;
            margin: 4%;
        }
     
        #bkgcaption {
            position: absolute;
            bottom: 0px;
            left: 0px;
             100%;
            height: 6%;
            background:#1a1a1a;
        }
        #caption {
            position: absolute;
            font-family: arial, helvetica, verdana, sans-serif;
            white-space: nowrap;
            color: #fff;
            bottom: 0px;
             100%;
            left: -10000px;
            text-align: center;
        }
     
    </style>
     
    <script type="text/javascript">
    var xm;
    var ym;
     
    /* ==== 鼠标移动事件方法 ==== */
    document.onmousemove = function(e){
        if(window.event) e=window.event;
        xm = (e.x || e.clientX);
        ym = (e.y || e.clientY);
    }
     
    /* ====调整窗口大小==== */
    function resize() {
        if(diapo)diapo.resize();
    }
    onresize = resize;
     
    /* ==== 不透明度 ==== */
    setOpacity = function(o, alpha){
        if(o.filters)o.filters.alpha.opacity = alpha * 100; else o.style.opacity = alpha;
    }
     
     
    /* ===== 封装脚本 ==== */
    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,
     
        /* ==== 脚本属性 ==== */
        attraction : 2,
        acceleration : .9,
        dampening : .1,
        zoomOver : 2,
        zoomClick : 6,
        transparency : .8,
        font_size: 18,
     
        /* ==== 使用Diapo调整大小 ==== */
        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();
                rsB = rs;
            }
        },
     
        /* ==== 加载jQuery插件Diapo ==== */
        CDiapo : function(o){
            /* ==== 输入变量 ==== */
            this.o        = o;
            this.x_pos    = this.y_pos    = 0;
            this.x_origin = this.y_origin = 0;
            this.x_var    = this.y_var    = 0;
            this.x_target = this.y_target = 0;
            this.w_pos    = this.h_pos    = 0;
            this.w_origin = this.h_origin = 0;
            this.w_var    = this.h_var    = 0;
            this.w_target = this.h_target = 0;
            this.over     = false;
            this.click    = false;
     
            /* ==== 创造"影子" ==== */
            this.spa = document.createElement("span");
            this.spa.className = "spaDC";
            diapo.DC.appendChild(this.spa);
     
            /* ==== 创建小图片 ==== */
            this.img = document.createElement("img");
            this.img.className = "imgDC";
            this.img.src = o.src;
            this.img.O = this;
            diapo.DC.appendChild(this.img);
            setOpacity(this.img, diapo.transparency);
     
            /* ====鼠标事件 ==== */
            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;
                }
            }
     
            /* ==== 调整图片位置 ==== */
            this.resize = function (){
                with (this) {
                    x_origin = o.offsetLeft;
                    y_origin = o.offsetTop;
                    w_origin = o.offsetWidth;
                    h_origin = o.offsetHeight;
                }
            }
     
            /* ==== 动画方法 ==== */
            this.position = function (){
                with (this) {
                    /* ==== 设置目标位置 ==== */
                    w_target = w_origin;
                    h_target = h_origin;
                    if(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 {
                        /* ==== 鼠标完成时 ==== */
                        x_target = x_origin;
                        y_target = y_origin;
                    }
                    if(click){
                        /* ==== 点击时 ==== */
                        w_target = w_origin * diapo.zoomClick;
                        h_target = h_origin * diapo.zoomClick;
                    }
     
                    /* ====  特效 ==== */
                    x_pos += x_var = x_var * diapo.acceleration + (x_target - x_pos) * diapo.dampening;
                    y_pos += y_var = y_var * diapo.acceleration + (y_target - y_pos) * diapo.dampening;
                    w_pos += w_var = w_var * (diapo.acceleration * .5) + (w_target - w_pos) * (diapo.dampening * .5);
                    h_pos += h_var = h_var * (diapo.acceleration * .5) + (h_target - h_pos) * (diapo.dampening * .5);
                    diapo.rs += (Math.abs(x_var) + Math.abs(y_var));
     
                    /* ==== 页面动画 ==== */
                    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);
                    }
                }
            }
        },
     
        /* ==== 主要循环 ==== */
        run : function(){
            diapo.xm = xm - diapo.nx;
            diapo.ym = ym - diapo.ny;
            /* ==== 动画标题 ==== */
            diapo.tx_pos += diapo.tx_var = diapo.tx_var * .9 + (diapo.tx_target - diapo.tx_pos) * .02;
            diapo.txt.style.left = Math.round(diapo.tx_pos) + "px";
            /* ==== anim图片 ==== */
            for(var i in diapo.O) diapo.O[i].position();
            /* ==== 循环 ==== */
            setTimeout("diapo.run();", 16);
        },
     
        /* ==== 图片装载 ==== */
        images_load : function(){
            // ===== 所有图片装载完成停止循环 =====
            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();", 8);
        },
     
        /* ==== 初始化方法==== */
        init : function() {
            diapo.DC = document.getElementById("diapoContainer");
            diapo.img = diapo.DC.getElementsByTagName("img");
            diapo.txt = document.getElementById("caption");
            diapo.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="img/1.jpg" alt="">
        <img class="imgsrc" src="img/2.jpg" alt="">
        <img class="imgsrc" src="img/3.jpg" alt="">
        <div id="bkgcaption"></div>
        <div id="caption"></div>
    </div>
     
    <script type="text/javascript">
    /* ==== 开始脚本 ==== */
    function dom_onload() {
        if(document.getElementById("diapoContainer")) diapo.init(); else setTimeout("dom_onload();", 8);
    }
    dom_onload();
    </script>
    </div>
    </body>
    </html>
    

    点击查看我做的效果图:

    点击这里,感觉好尴尬啊

    不努力,还要青春干什么?
  • 相关阅读:
    关于GitHub推送时发生Permission denied (publickey)的问题
    线性模型——机器学习(西瓜书)读书笔记
    梯度下降算法的简单理解
    PRML学习笔记第一章
    python函数学习之装饰器
    机器学习 概论
    Mybatis
    Nginx 常用配置清单
    接口,抽象类
    IntelliJ IDEA打war包
  • 原文地址:https://www.cnblogs.com/caidupingblogs/p/5531961.html
Copyright © 2011-2022 走看看