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 ...
随机推荐
- Spring Boot—14JdbcTemplate
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- OpenGL学习—04--彩色立方体
1.tutorial04.cpp // Include standard headers #include <stdio.h> #include <stdlib.h> ...
- hadoop HA集群搭建步骤
NameNode DataNode Zookeeper ZKFC JournalNode ResourceManager NodeManager node1 √ √ √ √ node2 ...
- Java类的封装
java中四种不同的限定词限定的成员(成员变量或成员变量方法),访问权限由大到小依次为: public(公共的) 可以被所有的类访问 protected(受保护的) 可以被这个类本身访问 可以被它的子 ...
- KHFlatButton
KHFlatButton https://github.com/kylehorn/KHFlatButton 效果: 对于自己做demo来说,每次设置button就不用这么折腾了,几句话就行了,非常爽: ...
- 第一个 mac 程序 Create-JSON-Model
第一个 mac 程序 Create-JSON-Model 效果图 数据 {"ID":null,"name":"Doe","firs ...
- js实现字符串一个一个依次显示
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- VS2015 无法启动IIS Express Web服务器(已解决)
VS2015 无法启动IIS Express Web服务器 首先说一下我遇到问题的情况.这个项目是在公司电脑创建的,运行一直是正常的.今天把项目拷贝回来做. 可是到自己的电脑上,运行就提示 无法启动I ...
- 关于markdown格式的测试..
标题 标题一 这是? 标题二 标题三 标题四 区块 1.这是一个列表项目 还是吗? 嵌套了? 空格了? 区块加列表 标题加二级列表 嘿嘿 无序列表 RED GREEN BLUE 有序列表 dog ca ...
- 使用Thunderbird时你可能会用到的技巧
1.添加qq邮箱账号 (1).开启IMAP/SMTP服务 先在QQ网页邮箱-设置-账户:开启IMAP/SMTP服务(2). Thunderbird 里设定端口(非POP):IMAP:imap.qq.c ...