基于CSS3和jQuery实现跟随鼠标方位的Hover特效


Posted in Javascript onJuly 25, 2016

今天我们来学习如何通过CSS3的特性和jQuery来创建一个感知鼠标滑动方向的hover效果。当鼠标滑进的时候,遮罩层会从上次鼠标滑出的方向滑入,当鼠标滑出的时候,遮罩层会跟随鼠标,从鼠标滑出的方向滑出。这是一个十分有趣的效果。
我们使用无序列表来组织缩略图和描述遮罩层:

<ul id="da-thumbs" class="da-thumbs">
<li>
<a href="http://dribbble.com/shots/502538-Natalie-Justin-Cleaning">
<img src="images/7.jpg" />
<div><span>Natalie & Justin Cleaning by Justin Younger</span></div>
</a>
</li>
<li>
<!-- ... -->
</li>
<!-- ... -->
</ul>

这些列表项将会向左浮动,并且相对定位,因为我们绝对定位描述遮罩层:

.da-thumbs li {
float: left;
margin: 5px;
background: #fff;
padding: 8px;
position: relative;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.da-thumbs li a,
.da-thumbs li a img {
display: block;
position: relative;
}
.da-thumbs li a {
overflow: hidden;
}
.da-thumbs li a div {
position: absolute;
background: rgba(75,75,75,0.7);
width: 100%;
height: 100%;
}

接下来我们将这样做:根据鼠标进入的位置,我们将“from”样式应用给遮罩层,它设置了遮罩层的初始位置。然后我们将使用过渡并将添加最终状态的样式。这样遮罩层就滑入了。当我们离开元素时,我们再次应用“from”样式给遮罩层(尽管现在实际上是滑出)并去除之前的最终状态样式。

嗯,以下就是这个小插件的核心:

this.$el.on( 'mouseenter.hoverdir, mouseleave.hoverdir', function( event ) {
var $el = $( this ),
$hoverElem = $el.find( 'div' ),
direction = self._getDir( $el, { x : event.pageX, y : event.pageY } ),
styleCSS = self._getStyle( direction );
if( event.type === 'mouseenter' ) {
$hoverElem.hide().css( styleCSS.from );
clearTimeout( self.tmhover );
self.tmhover = setTimeout( function() {
$hoverElem.show( 0, function() {
var $el = $( this );
if( self.support ) {
$el.css( 'transition', self.transitionProp );
}
self._applyAnimation( $el, styleCSS.to, self.options.speed );
} );
}, self.options.hoverDelay );
}
else {
if( self.support ) {
$hoverElem.css( 'transition', self.transitionProp );
}
clearTimeout( self.tmhover );
self._applyAnimation( $hoverElem, styleCSS.from, self.options.speed );
}
} );

我们主要是给列表项绑定‘mouseenter'和‘mouseleave'事件,通过_getDir函数我们获得鼠标滑进或滑出的方向(想象检测区域是个被分成四个三角形的矩形)。

你将会看到,在第二个demo中,我们添加了延迟,这样当鼠标从一个角落移到另一个角落的时候不会发生太多的动画。
我希望你可以喜欢这个小特效并觉得很有用!

如果浏览器不支持CSS过渡将会使用jQuery动画。

原地址和插件下载

以上所述是小编给大家介绍的基于CSS3和jQuery实现跟随鼠标方位的Hover特效,希望对大家有所帮助!

Javascript 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 Javascript
javascript 鼠标拖动图标技术
Feb 07 Javascript
对new functionName()定义一个函数的理解
May 22 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
jQuery实现图片加载完成后改变图片大小的方法
Mar 29 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
Jun 25 Javascript
js实现弹窗暗层效果
Jan 16 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 Javascript
javascript insertAfter()定义与用法示例
Jul 25 #Javascript
jquery之别踩白块游戏的简单实现
Jul 25 #Javascript
JavaScript禁止用户多次提交的两种方法
Jul 24 #Javascript
JavaScript表单焦点自动切换代码
Jul 24 #Javascript
javascript中sort排序实例详解
Jul 24 #Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
Jul 24 #Javascript
关于input全选反选恶心的异常情况
Jul 24 #Javascript
You might like
swfupload 多文件上传实现代码
2008/08/27 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
王纯业的Python学习笔记 下载
2007/02/10 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python中redis的安装和使用
2016/12/04 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python利用tkinter实现屏保
2019/07/30 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
大四自我鉴定范文
2013/10/06 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
求职信模版
2013/11/30 职场文书
物业招聘计划书
2014/01/10 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript