• 有趣的放大镜


    代码:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>JS文字球状放大效果DEMO演示</title>
    
    <style type="text/css">
    body {cursor:crosshair;margin:0; padding:0; position:absolute; overflow:hidden; background:#000; left:0; top:0; 100%; height:100%;}
    span {position:absolute;font-family: verdana; font-weight: bold;}
    </style>
    
    <script type="text/javascript"><!--
    
    T    = "WKTSB ";
    I    = 0;
    o    = new Array();
    xm   = -1000;
    ym   = -1000;
    ///////////////
    rad  = 100;
    dim  = 600;
    ///////////////
    W    = 0;
    H    = 0;
    NX   = 14;
    NY   = 14;
    var nx;
    var ny;
    
    document.onmousemove = function(e){
        if (window.event) e = window.event;
        xm = (e.x || e.clientX) - (nx  * .5) + dim * .5;
        ym = (e.y || e.clientY) - (ny * .5) + dim * .5;
    }
    
    function resize() {
        nx = document.body.offsetWidth;
        ny = document.body.offsetHeight;
    }
    onresize = resize;
    
    function CObj(N,i,j,c){
        this.obj = document.createElement("span");
        this.obj.innerHTML = c;
        DOOT.appendChild(this.obj);
        this.N    = N;
        this.To   = 16;
        this.x0   = i*2*W;
        this.y0   = j*2*H;
        this.anim = true;
    
        this.mainloop = function(){
            with (this) {
                 dx   = xm - x0;
                dy   = ym - y0;
                dist = Math.sqrt(dx * dx + dy * dy);
                if (dist < rad) {
                    anim = true;
                    M    = Math.cos(.5 * Math.PI * Math.abs(dist / rad));
                    c    = Math.round(84 + M * 171);
                    with(obj.style){
                        left     = x0 - dx * M;
                        top      = y0 - dy * M;
                        zIndex   = Math.round(100 + M);
                        fontSize = 8 + M * W * 2;
                        color    = "RGB("+c+","+c+","+c+")";
                    }
                } else {
                    if(anim){
                        with(obj.style){
                            left     = x0;
                            top      = y0;
                            zIndex   = 0;
                            fontSize = 8;
                            color    = "RGB(88,88,88)";
                        }
                    anim = false;
                    }
                }
            }
        }
    }
    function run(){
        for(i in o)o[i].mainloop();
        setTimeout(run,16);
    }
    
    onload = function (){
        DOOT = document.getElementById("doot");
        with(DOOT.style){
            left = -dim/2;
            top  = -dim/2;
            width = dim;
            height = dim;
        }
        resize();
        W = (dim  / NX) / 2;
        H = (dim / NY) / 2;
        K = 0;
        for(var j=0;j<NY;j++){
            for(var i=0;i<NX;i++){
                c=T.charAt((I++)%T.length).toUpperCase();
                if(c==" ")c="·";
                o[K] = new CObj(K++,i,j,c);
            }
        }
        run();
    }
    //-->
    </script>
    </head>
    
    <body>
    
    <span style="position:absolute;left:50%;top:50%">
        <span id="doot"></span>
    </span>
    <div style="text-align:center;clear:both;">
    <script src="/gg_bd_ad_720x90.js" type="text/javascript"></script>
    <script src="/follow.js" type="text/javascript"></script>
    </div>
    </body>
    </html>

    截图:

  • 相关阅读:
    使用vue-cli初始化vue项目
    easyUI使用datagrid-detailview.js实现二级列表嵌套
    easyUI使用dailog实现弹出框带表单功能
    vue进行文件下载
    TypeError: Cannot read property 'length' of null
    org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'null' to required type 'double' for property 'band'; nested exception is org.springframework.core.convert.Con
    桑叶黑芝麻糊,从头到脚通补
    家庭中成药使用方法一览表
    儿科常见疾病的中成药疗法
    常见病饮食宜忌速查手册
  • 原文地址:https://www.cnblogs.com/frankzone/p/7789114.html
Copyright © 2020-2023  润新知