基于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实现当前页面标签高亮显示的方法
Mar 10 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
javascript作用域链(Scope Chain)用法实例解析
Nov 30 Javascript
js仿百度切换皮肤功能(html+css)
Jul 10 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
Oct 09 Javascript
深入理解Webpack 中路径的配置
Jun 17 Javascript
提高Node.js性能的应用技巧分享
Aug 10 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
Nov 28 Javascript
VueJs组件之父子通讯的方式
May 06 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
Aug 03 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
Mar 28 Javascript
JS中call()和apply()的功能及用法实例分析
Jun 28 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
解析php取整的几种方式
2013/06/25 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
php多线程并发实现方法
2016/09/30 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
python打开文件并获取文件相关属性的方法
2015/04/23 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
Python无损压缩图片的示例代码
2020/08/06 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
数控专业应届生求职信
2013/11/27 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
校园元旦活动总结
2014/07/09 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
ES6 解构赋值的原理及运用
2021/05/25 Javascript
Python办公自动化PPT批量转换操作
2021/09/15 Python