基于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 相关文章推荐
关于this和self的使用说明
Aug 01 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
Sep 06 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
JavaScript显示表单内元素数量的方法
Apr 02 Javascript
Svg.js实例教程及使用手册详解(一)
May 16 Javascript
Bootstrap中的Panel和Table全面解析
Jun 13 Javascript
JS 全屏和退出全屏详解及实例代码
Nov 07 Javascript
js实现倒计时及时间对象
Nov 15 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
js canvas实现放大镜查看图片功能
Jun 08 Javascript
webpack项目调试以及独立打包配置文件的方法
Feb 28 Javascript
详解基于Wepy开发小程序插件(推荐)
Aug 01 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 array_slice函数的使用以及参数详解
2008/08/30 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
js style动态设置table高度
2014/10/21 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
Vue组件通信的几种实现方法
2019/04/25 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
Python shelve模块实现解析
2019/08/28 Python
Python telnet登陆功能实现代码
2020/04/16 Python
如何利用python生成MD5并去重
2020/12/07 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
介绍一下linux的文件权限
2012/02/15 面试题
水务局局长岗位职责
2013/11/28 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
大学生实习证明
2015/06/16 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
详细介绍python类及类的用法
2021/05/31 Python