• 含羞默默一张一合效果田


    含羞默默一张一合效果---田
    首先展示“田”字效果


    实现思想主要分为几部分
    随机生成颜色值

                var getRandomColor = function(){
                    return  '#' +
                        (function(color){
                        return (color +=  '0123456789abcdef'[Math.floor(Math.random()*16)])
                            && (color.length == 6) ?  color : arguments.callee(color);
                    })('');
                }

    参考:司徒正美《javascript获取随机颜色

    创建span标签,插入div中。
    creSpan函数,n指当前个数,mpid指父容器div,mleft指当前span的left的值,mtop指当前span的top值

                function creSpan(n,mpId,mleft,mtop){
                    var mSpan = document.createElement("span");  
                    var pId = mpId[0];
                    pId.appendChild(mSpan);
                    with(mSpan.style){
                        left = mleft+"px";
                        top = mtop+"px";
                        background = getRandomColor();
                    }
                }


    生成“田”字
    创建一个二维数组保存每个creSpan的对象。
    myleft=100,mtop=50 默认初始值距左距顶的距离。
    画“田”字,使用双重循环生成。

                    var myleft = 100;
                    var mytop = 50;
                    var arr = new Array();
                    var test =  $("#test");
                    for(var j=0;j<23;j++){
                        arr[j] = new Array();
                        if(j<3){
                            for(var i=0;i<19;i++){
                                myleft+=32;
                                arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                            }
                        }
                        else if(j>2&&j<10){
                            for(var i=0;i<19;i++){
                                myleft+=32;
                                if(i<3){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                                }
                                else if(i>7&&i<11){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                                }
                                else if(i>15){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                                }
                            }
                        }
                        else if(j>9&&j<13){
                            for(var i=0;i<19;i++){
                                myleft+=32;
                                arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                            }
                        }
                        else if(j>12&&j<20){
                            for(var i=0;i<19;i++){
                                myleft+=32;
                                if(i<3){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                                }
                                else if(i>7&&i<11){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                                }
                                else if(i>15){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                                }
                            }
                        }
                        else{
                            for(var i=0;i<19;i++){
                                myleft+=32;
                                arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop);
                            }
                        }
                        mytop+=32;
                        myleft=100;
                    }

    当鼠标移动到每个span上时尖尖缩小,然后慢慢张开。
    主要采用jquery中的animate函数。控制width,height,left,top的值。

                    $.each($("#test span"),function(k,v){
                        $(this).mouseover(function(){
                            $(this).animate({
                                "10px",
                                height:"10px",
                                left:"+="+parseInt(30-20)/2+"px",
                                top:"+="+parseInt(30-20)/2+"px"
                            },3000,function(){
                                $(this).animate({
                                    "30px",
                                    height:"30px",
                                    left:"-="+parseInt(30-20)/2+"px",
                                    top:"-="+parseInt(30-20)/2+"px"
                                },1000);
                            });
                        });
                    });



    示例效果:

  • 相关阅读:
    java中==和equels的区别
    synchronized的用法及原理
    分库分表之Mycat实现
    Mysql架构和索引及性能优化
    Java内存模型与反向代理服务器Nginx
    Spring基础知识
    使用和理解线程池
    知识补充(数据库优化、三大范式)
    最大子数组问题,分治法求解
    Mybatis学习笔记
  • 原文地址:https://www.cnblogs.com/kuikui/p/2598491.html
Copyright © 2020-2023  润新知