• 键盘控制背景边框平滑移动(jquery)


        今天同事让我看了一个动画效果,是由键盘控制背景边框平滑移动,我感觉挺cool,所以我自己也动手制作了一个。目的是为了锻炼自己,看自己是否也能在短时间内实现。

      先上图:

    一、html代码

    <!DOCTYPE html>
        <html>
        <head>
            <title></title>
            <link rel="stylesheet" href="../reset.css"/>
            <script type="text/javascript" src="../jquery-1.10.2.js"></script>
            <style type="text/css">
                .box {width: 544px; height: 680px;  margin: 20px auto;}
                .tab {position: relative;  }
                .tab ul li {position: relative; float: left; margin: 20px; display: table-cell;}
                .highLight {display: none; position: absolute; width: 154px; height: 197px;background: url("images/chose.png") no-repeat;}
                .tab ul li a img{ width: 138px; height: 181px; vertical-align: middle; display:table-cell;vertical-align:middle;}
            </style>
        </head>
        <body>
            <div class="box">
                <div class="tab">
                    <ul>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                        <li><a href="#"><img src="images/img1.jpg"/></a></li>
                    </ul>
                    <div class="highLight"></div>   <!-- 高亮显示的背景图片 -->
                </div>
            </div>
    </body> </html>

    二、js代码

    $(function(){
                        var liHeight = $(".tab ul li").outerHeight(true);   /* li长度 */
                        var liWidth = $(".tab ul li").outerWidth(true); /* li宽度 */
                        var liCount = $(".tab").find("li").length;  /* li总个数 */
    
                        var i = 0;  /* 判断li是否为第一次鼠标事件 */
                        var index = 0;
                        $(".tab ul li").mouseover(function(){
                            index = $(this).index();    /* 判断li为第几个数,从0开始 */
                            var offsetLeft = $(this).offset().left - $(".box").offset().left - 8;   /* 为移动图片左边距离,减去8是因为图片原因 */
                            var offsetTop = $(this).offset().top - $(".box").offset().top - 8;  /* 为移动图片上边距离,减去8是因为图片原因 */
                            if(i==0){
                                $(".highLight").css({left: offsetLeft,top: offsetTop}).show();
                            }else if(i>0){
                                $(".highLight").animate({left: offsetLeft,top: offsetTop},300);
                            }
                            i++;
                        })
    
                        var rowCount = 3;   /* 每行显示图片的个数 */
                        var j = 0;
                        $(window).keydown(function(event){
                            var val = event.which;
                            switch(val){
                                case(37):/* 键盘左键 */
                                    if(index>0){
                                        index = index-1;
                                    }
                                    var offsetLeft = $(".tab ul li").eq(index).offset().left - $(".box").offset().left - 8;
                                    var offsetTop = $(".tab ul li").eq(index).offset().top - $(".box").offset().top - 8;
                                    if(index>=0){
                                        $(".highLight").animate({left: offsetLeft,top: offsetTop},300);
                                    }
                                break;
    
                                case(38):/* 键盘上键 */
                                    if((index-rowCount)>=0){
                                        index = index - rowCount;
                                        var offsetLeft = $(".tab ul li").eq(index).offset().left - $(".box").offset().left - 8;
                                        var offsetTop = $(".tab ul li").eq(index).offset().top - $(".box").offset().top - 8;
                                        $(".highLight").animate({left: offsetLeft,top: offsetTop},300);
                                    }
                                break;
    
                                case(39):/* 键盘右键 */
                                    if(j==0){
                                        $(".highLight").css({left: "12px",top: "12px"}).show();
                                    }else if(j>0){
                                        if(index<(liCount-1)){
                                            index = index+1;
                                        }
                                        var offsetLeft = $(".tab ul li").eq(index).offset().left - $(".box").offset().left - 8;
                                        var offsetTop = $(".tab ul li").eq(index).offset().top - $(".box").offset().top - 8;
                                        if(index<liCount){
                                            $(".highLight").animate({left: offsetLeft,top: offsetTop},300);
                                        }
                                    }
                                    j++;
                                break;
    
                                case(40):/* 键盘下键 */
                                    if((index+rowCount)<liCount){
                                        index = index + rowCount;
                                        var offsetLeft = $(".tab ul li").eq(index).offset().left - $(".box").offset().left - 8;
                                        var offsetTop = $(".tab ul li").eq(index).offset().top - $(".box").offset().top - 8;
                                        $(".highLight").animate({left: offsetLeft,top: offsetTop},300);
                                    }
                            }
    
                        })
    
                    })

        虽然我现在写的都是一些很简单的代码,但是我还是想通过这种方式来提升自己。里面的文字叙述太少,我会慢慢加强的,争取下次能再好一点。

  • 相关阅读:
    消息队列系列——启蒙(一)
    重新整理数据结构与算法(c#)—— 图的深度遍历和广度遍历[十一]
    重新整理数据结构与算法——八皇后问题解决[十]
    重新整理数据结构与算法——迷宫算法[九]
    重新整理数据结构与算法——逆波兰表达计算器[八]
    lowdb 在electron 使用中注意的问题
    apollo客户端springboot实战(四)
    apollo在liunx环境实战(三)
    apollo入门demo实战(二)
    设计模式总结
  • 原文地址:https://www.cnblogs.com/tattoo/p/3459707.html
Copyright © 2020-2023  润新知