zoukankan      html  css  js  c++  java
  • jQuery鼠标悬停

    (function ($) {
        $.fn.hoverdir = function(options){
            var options = $.extend({
                choice : ".cove"
            },options);
            return this.each(function(){
                var self = $(this);
                self.hover(function(e){
                    mouseMove(e,self,true);
                },function(e){
                    mouseMove(e,self,false);
                });
                function mouseMove(e,element,bool){    //光标、元素、布尔
                    var top    = element.offset().top;   //元素top距离浏览器顶部距离
                    var bottom = top + element.height(); //元素bottom距离浏览器顶部距离
                    var left   = element.offset().left;  //元素left距离浏览器左边距离
                    var right  = left + element.width(); //元素right距离浏览器左边距离
                    var x      = e.pageX;                //光标当前横向x位置
                    var y      = e.pageY;                //光标当前纵向y位置
                    //光标当前横纵向位置减去元素各方位距离(取最小值) = 将要显示的方向
                    var sT = Math.abs(y - top);
                    var sB = Math.abs(y - bottom);
                    var sL = Math.abs(x - left);
                    var sR = Math.abs(x - right);
                    var current = Math.min(sT,sB,sL,sR);         //取元素最小值从而进行switch排除
                    var choices  = element.find(options.choice); //获取需要选择的元素
                    switch (current){
                      case sT:
                          if(bool){
                              choices.css({left:0,top:'-100%'}).animate({top:0},200);
                            }else{
                                choices.stop(1,1).animate({top:'-100%'},200);
                            }
                            break;
                        case sB:
                            if(bool){
                                choices.css({left:0,top:'100%'}).animate({top:0},200);                            
                            }else{
                                choices.stop(1,1).animate({top:'100%'},200);    
                            }
                            break;
                        case sL:
                            if(bool){
                                choices.css({left:'-100%',top:0}).animate({left:0},200);                            
                            }else{
                                choices.stop(1,1).animate({left:'-100%'},200);    
                            }
                            break;
                        case sR:
                            if (bool){
                                choices.css({left:'100%',top:0}).animate({left:0},200);                            
                            }else{
                                choices.stop(1,1).animate({left:'100%'},200);    
                            }
                            break;
                    }
                }
            });
        }
    })(jQuery);
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                body{ background-color:#2A2A2A;}
                li{list-style: none;}
                #wrap{width: 800px;margin:100px auto;}
                #wrap ul li{float: left;margin: 5px;width: 230px;height: 360px;position: relative;overflow: hidden;}
                #wrap ul li .cove{width: 230px;height: 220px;position: absolute;background: url(img/new-bg.png);padding: 140px 0 0 0;top: 100%;left: 100%;}
                #wrap ul li .cove p{font-size: 14px;color:#fff;text-align: center;}
            </style>
        </head>
        <body>
        <div id="wrap">
            <ul>
                <li>
                    <img src="img/1.png" />
                        <div class="cove">
                            <p>pci1</p>
                            <p>Picture info 1</p>
                        </div>
                </li>
                <li>
                    <img src="img/2.png" />
                        <div class="cove">
                            <p>pci2</p>
                            <p>Picture info 2</p>
                        </div>
                </li>
                <li>
                    <img src="img/3.png" />
                        <div class="cove">
                            <p>pci3</p>
                            <p>Picture info 3</p>
                        </div>
                </li>
                <li>
                    <img src="img/4.png" />
                        <div class="cove">
                            <p>pci4</p>
                            <p>Picture info 4</p>
                        </div>
                </li>
                <li>
                    <img src="img/5.png" />
                        <div class="cove">
                            <p>pci5</p>
                            <p>Picture info 5</p>
                        </div>
                </li>
          <li>
                    <img src="img/6.png" />
                        <div class="cove">
                            <p>pci6</p>
                            <p>Picture info 6</p>
                        </div>
                </li>
            </ul>
        </div>
        <script src="../jquery.min.js"></script>
        <script src="hoverdir.js"></script>
        <script>
            $("#wrap ul li").hoverdir();
        </script>
        </body>
    </html>

    不多说,可以通过需求拓展功能。

  • 相关阅读:
    PCB Genesis加邮票孔(邮票孔增加方向判断--左右上下)实现算法
    PCB SLOT槽孔数量计算方法,同CAM350孔数一致 实现方法
    从上到下打印二叉树II
    数据结构与算法(2)---顺序表
    栈的压入弹出序列
    包含min函数的栈
    顺时针打印矩阵
    数据结构与算法(1)--绪论
    反转链表
    数值的整数次方(快速幂)
  • 原文地址:https://www.cnblogs.com/xueweijie/p/7920362.html
Copyright © 2011-2022 走看看