基于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 相关文章推荐
jquery 字符串切割函数substring的用法说明
Feb 11 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
Dec 23 Javascript
不同js异步函数同步的实现方法
May 28 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
Aug 15 Javascript
利用jquery禁止外层滚动条的滚动
Jan 05 Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 Javascript
浅谈 Vue 项目优化的方法
Dec 16 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
详解一个基于react+webpack的多页面应用配置
Jan 21 Javascript
vue下载excel的实现代码后台用post方法
May 10 Javascript
elementui的el-popover修改样式不生效的解决
Jun 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
php 时间计算问题小结
2009/01/04 PHP
php文件读取方法实例分析
2015/06/20 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
Python文件操作基本流程代码实例
2017/12/11 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
Python中的取模运算方法
2018/11/10 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Python简单实现区域生长方式
2020/01/16 Python
python Shapely使用指南详解
2020/02/18 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
代收款委托书范本
2014/10/01 职场文书
大班下学期个人总结
2015/02/13 职场文书
支行行长岗位职责
2015/02/15 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
Python requests用法和django后台处理详解
2022/03/19 Python