• 某公司测评编程题:简单网页点阵液晶屏


    某公司测评编程题:简单网页点阵液晶屏

    翻滚的字母

     

    实现一个简单的网页点阵液晶屏,液晶屏上有2个字母:DP

    第一问:写出你觉得最合适的html结构及对应的CSS。

    第二问:请用JavaScript实现如下效果:每隔一秒交换2个字母的位置。

    第三问:请用JavaScript实现如下效果:字母DP一起向左不停滚动,循环显示这2个字母

    可以使用jQuery等任何前端框架,为节省时间,推荐采用:http://jsfiddle.net直接进行编码和调试。

    此题一开始看,就想到用8*16个div元素来实现方块。定义一个css样式类为black,把字母所经过的方块添加black类。

    因此,设计html结构如下:

    <div>

    <divclass="row1 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    <divclass="row2 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    <divclass="row3 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    <divclass="row4 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    <divclass="row5 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    <divclass="row6 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    <divclass="row7 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    <divclass="row8 row">

    <divclass="col1"></div>

    <divclass="col2"></div>

    <divclass="col3"></div>

    <divclass="col4"></div>

    <divclass="col5"></div>

    <divclass="col6"></div>

    <divclass="col7"></div>

    <divclass="col8"></div>

    <divclass="col9"></div>

    <divclass="col10"></div>

    <divclass="col11"></div>

    <divclass="col12"></div>

    <divclass="col13"></div>

    <divclass="col14"></div>

    <divclass="col15"></div>

    <divclass="col16"></div>

    </div>

    </div>

    给每一行定义为rowN 类,每一列定义为colN类,到时候根据所创建的js二维数组,即可对每个正方形元素进行控制。

    CSS样式如下:

    <styletype="text/css">

    div > div > div {

    30px;

    height:30px;

    float:left;

    border:1px gray solid;

    }

    body > div{

    520px;

    }

    .black{

    background:black;

    }

    </style>

     

    由于用到了jquery函数,所以要引用jquery:

    <scriptsrc="jquery.js"></script>

    接下来定义两个数组:d和p,里面存有字母d和p所对应的二维坐标

    如下:

    var d=[[1,2],[1,3],[1,4],[1,5],[2,2],[2,6],[3,2],[3,7],[4,2],[4,7],[5,2],[5,7],[6,2],[6,7],[7,2],[7,6],[8,2],[8,3],[8,4],[8,5]];

    var p=[[1,10],[1,11],[1,12],[1,13],[1,14],[1,15],[2,10],[2,15],[3,10],[3,15],[4,10],[4,11],[4,12],[4,13],[4,14],[4,15],[5,10],[6,10],[7,10],[8,10]];

    然后写一个初始化函数init(),对这两个数组进行遍历,存在二维坐标的元素添加black类。

    代码如下:

    function init(){

    for(i=0;i<d.length;i++)

    {

    var t=".row"+d[i][0]+"> .col"+d[i][1];

    $(t).addClass("black");

    }

    for(i=0;i<p.length;i++)

    {

    var t=".row"+p[i][0]+"> .col"+p[i][1];

    $(t).addClass("black");

    }

    }

    至此,完成了一开始的页面展现。

    现在来实现文字交换的效果。

    由于是点阵屏幕,每个字母占据8*8点阵,所以只要将第一个字母中黑点的坐标+8,第二个字母中黑点的坐标-8,即可实现字母位置交换。

    对数组进行整体操作,我们可以使用js的map函数进行操作,首先对坐标判断,若大于8,则减8,小于8,则加8,并返回新数组:

    function fe(s){

    switch(s[1]>8){

    casetrue :

    s[1]=s[1]-8;

    break;

    casefalse :

    s[1]=s[1]+8;

    break;

    }

    return Array(s[0],s[1]);

    }

    要注意的是,交换的步骤是:黑点清空——>交换位置——>涂黑。

    代码如下:

    清空代码:

    function erase(){

    for(i=0;i<d.length;i++)

    {

    var t=".row"+d[i][0]+"> .col"+d[i][1];

    $(t).removeClass("black");

    }

    for(i=0;i<p.length;i++)

    {

    var t=".row"+p[i][0]+"> .col"+p[i][1];

    $(t).removeClass("black");

    }

    }

    交换代码:

    function exchange(){

    erase();

    p=p.map(fe);

    d=d.map(fe);

    init();

    }

    对于实现移动的代码,也是一样,对列坐标进行-1(左移),也是通过js的map函数执行以下代码:

    function fm(s){

    --s[1];

    if(s[1]<1)

    s[1]=16;

    return Array(s[0],s[1]);

    }

    移动步骤和交换步骤一样:

    function exchange(){

    erase();

    p=p.map(fe);

    d=d.map(fe);

    init();

    }

    function moveInterval(f,t){

    setInterval(f,t);

    }

    在html中添加两个按钮:

    <inputtype="button"value="交换"onclick="exchange()"/>

    <inputtype="button"value="移动"onclick="moveInterval(move,10)"/>

  • 相关阅读:
    js自动小轮播
    js字符串
    工资
    可是姑娘,你为什么要编程呢?
    程序猿媳妇儿注意事项
    js勾选时显示相应内容
    js点击显示隐藏
    js选项卡
    js数组
    js旋转V字俄罗斯方块
  • 原文地址:https://www.cnblogs.com/yangzec/p/3361757.html
Copyright © 2020-2023  润新知