jQuery插件,判断鼠标的移入移出方向
今天用jQuery封装了一个简单的插件,判断鼠标的移入移出方向,以后的项目中可能还会遇到这样一个简单的效果,就记录下来吧!
先看结构和样式:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>判断鼠标移入移出方向</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.outer {
width: 400px;
height: 300px;
border: 2px solid orange;
margin: 100px auto;
overflow: hidden;
position: relative;
}
.outer img{
width: 400px;
height: 300px;
}
.outer div {
position: absolute;
width: 100%;
height: 100%;
background-color: black;
opacity: 0.5;
display: none;
line-height: 300px;
color: white;
}
</style>
</head>
<body>
<div class="outer">
<img src="timg.jpg">
<div class="mask">如果有来生,有没有人爱,我也要努力做一个可爱的人。</div>
</div> <script src="jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script>
<script src="jquery.hover.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function(){
$(".outer").fangxiang(); }) </script>
</body>
</html>
下面是封装的jquery.hover.js
;(function($){
$.fn.fangxiang = function(){
var disL = $(this).offset().left;
var disR = disL + $(this).outerWidth();
var disT = $(this).offset().top;
var disB = disT + $(this).outerHeight();
$(this).hover(function(e){
var dirL = Math.abs(e.clientX-disL);
var dirR = Math.abs(e.clientX-disR);
var dirT = Math.abs(e.clientY-disT);
var dirB = Math.abs(e.clientY-disB);
var dir = Math.min(dirL,dirR,dirT,dirB);
switch(dir){
case dirL:
$(this).find("div").show().css({"left":-$(this).outerWidth(),"top":0}).stop().animate({"left":0},500);
break;
case dirR:
$(this).find("div").show().css({"left":$(this).outerWidth(),"top":0}).stop().animate({"left":0},500);
break;
case dirT:
$(this).find("div").show().css({"top":-$(this).outerHeight(),"left":0}).stop().animate({"top":0},500);
break;
case dirB:
$(this).find("div").show().css({"top":$(this).outerHeight(),"left":0}).stop().animate({"top":0},500);
break;
}
},function(e){
var dirL = Math.abs(e.clientX-disL);
var dirR = Math.abs(e.clientX-disR);
var dirT = Math.abs(e.clientY-disT);
var dirB = Math.abs(e.clientY-disB);
var dir = Math.min(dirL,dirR,dirT,dirB);
switch(dir){
case dirL:
$(this).find("div").stop().animate({"left":-$(this).outerWidth()},500);
break;
case dirR:
$(this).find("div").stop().animate({"left":$(this).outerWidth()},500);
break;
case dirT:
$(this).find("div").stop().animate({"top":-$(this).outerHeight()},500);
break;
case dirB:
$(this).find("div").stop().animate({"top":$(this).outerHeight()},500);
break;
}
})
}
})(jQuery);
jquery.hover.js
感觉写的不是很完美,需要借助我写的这个结构才能使用,请大神帮忙优化!
附上使用的图片timg.jpg

jQuery插件,判断鼠标的移入移出方向的更多相关文章
- jQuery事件-div的显示隐藏及鼠标的移入移出
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 2015.10.11(js判断鼠标进入容器的方向)
判断鼠标进入容器的方向 1.前几天在万圣节专题项目中用到了鼠标坐标page事件,随着鼠标背景图片移动形成有层次感的效果,但page事件在IE低版本不支持,所以还要做兼容.在研究page事件同时无意中想 ...
- jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
这个插件的名字elevatezoom,网址为http://www.elevateweb.co.uk/image-zoom,在github上的项目首页为https://github.com/elevat ...
- 判断鼠标进入容器的方向小Demo
参考资料: 贤心博客:http://sentsin.com/web/112.html, Math.atan2(y,x) 解释 :http://www.w3school.com.cn/jsref/jsr ...
- JS用斜率判断鼠标进入DIV四个方向的方法 判断鼠标移入方向
本文要介绍的是一种鼠标从一个元素移入移出时,获取鼠标移动方向的思路.这个方法可以帮助你判断鼠标在移入移出时,是从上下左右的哪个方向发生的.这个思路,是我自己琢磨出来,利用了一点曾经高中学过的数学知识, ...
- jquery事件一 ---鼠标移入移出
比较一下几个jquery事件的区别 mouseover() 鼠标进入(进入子元素也触发) mouseout() 鼠标离开(离开子元素也触发) mouseenter() 鼠标进入(进入子元素不触发) m ...
- JS判断鼠标移入元素的方向
最终效果 这里的关键主要是判断鼠标是从哪个方向进入和离开的 $("li").on("mouseenter mouseleave",function(e) { v ...
- JS实现穿墙效果(判断鼠标划入划出的方向)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Vue中通过鼠标移入移出来添加或取消class样式(active)
基础知识: 先写一下vue中鼠标移入移出的基础知识,移入的触发事件是 @mouseenter,移出的触发事件是@mouseleave,知道这两个方法就简单了 基础知识的例子 <div clas ...
随机推荐
- 网络I/O模型--05多路复用I/O
多路复用I/O模型在应用层工作效率比我们俗称的 BIO 模型快的本质原因是,前者不再使用操作系统级别的“同步 I/O”模型 . 在 Linux 操作系统环境下, 多路复用 I/O 模型就是技术人员通常 ...
- TYPE_SCROLL_INSENSITIVE is not compatible with CONCUR_UPDATABLE
There are two options when setting ResultSet to be scrollable: TYPE_SCROLL_INSENSITIVE - The result ...
- requirejs中Shims使用说明
RequireJS中如果使用AMD规范,在使用的过程中没有太多的问题,如果加载非AMD规范的JS文件,就需要使用Require中的shim. require.config({ paths:{ jque ...
- Object、T(以下代指泛型)、?的区别
因为最近看了很多项目底层都使用了T,?泛型,于是百度了一下有如下理解 我们先来试着理解一下Object类,学习Java的应该都知道Object是所有类的父类,注意:那么这就意味着它的范围非常广!首先记 ...
- 文件夹名为单字符时右击弹出C++错误
原因:操作系统安装有虚拟光驱软件——WinMount,此错误为WinMount的一个Bug 解决方法: 打开Windows注册表,定位此注册表并删除即可 [HKEY_CLASSES_ROOT\Dire ...
- 铁乐学Python_day08_文件操作
一.[基本的文件操作] 参数: 1.文件路径: 2.编码方式: 3.执行动作:(打开方式)只读,只写,追加,读写,写读! #1. 打开文件,得到文件句柄并赋值给一个变量 f = open('E:/Py ...
- XGBoost 输出特征重要性以及筛选特征
1.输出XGBoost特征的重要性 from matplotlib import pyplot pyplot.bar(range(len(model_XGB.feature_importances_) ...
- SQL Sever——妙用种子列
/****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP 1000 [OFFRCD_STATUS_ID] ,[OFF ...
- bin/hdfs dfs命令
appendToFile Usage: hdfs dfs -appendToFile <localsrc> ... <dst> 追加一个或者多个文件到hdfs制定文件中.也可以 ...
- mysql用户创建及授权
一. 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...