基于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 相关文章推荐
JavaScript面向对象编程
Mar 02 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
Sep 14 Javascript
jQuery之选择组件的深入解析
Jun 19 Javascript
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
JavaScript获取网页支持表单字符集的方法
Apr 02 Javascript
JavaScript的代码编写格式规范指南
Dec 07 Javascript
详解vue-router2.0动态路由获取参数
Jun 14 Javascript
深入探究angular2 UI组件之primeNG用法
Jul 26 Javascript
js正则相关知识点专题
May 10 Javascript
详解vue axios二次封装
Jul 22 Javascript
vue3中provide && inject的使用
Jul 01 Vue.js
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在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
js 调整select 位置的函数
2008/02/21 Javascript
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
Tensorflow累加的实现案例
2020/02/05 Python
python3.7添加dlib模块的方法
2020/07/01 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
秘书行业自我鉴定范文
2013/12/30 职场文书
北京大学自荐信范文
2014/01/28 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
财务情况说明书范文
2014/05/06 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
重温入党誓词主持词
2015/06/29 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
Linux中如何安装并部署Redis
2022/04/18 Servers