基于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 表格合并的问题分享
Sep 17 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
JavaScript实现信用卡校验方法
Apr 07 Javascript
JS判断当前页面是否在微信浏览器打开的方法
Dec 08 Javascript
Fullpage.js固定导航栏-实现定位导航栏
Mar 17 Javascript
js实现倒计时及时间对象
Nov 15 Javascript
bootstrap导航、选项卡实现代码
Dec 28 Javascript
angular-tree-component的使用详解
Jul 30 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
Vue中的transition封装组件的实现方法
Aug 13 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
ThinkPHP之A方法实例讲解
2014/06/20 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
Node.js实现文件上传
2016/07/05 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
python可迭代对象去重实例
2020/05/15 Python
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
Sony C++笔试题
2013/03/10 面试题
物流专业毕业生推荐信范文
2013/11/18 职场文书
企业年会主持词
2014/03/27 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
增值税发票丢失证明
2015/06/19 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle