今天要给大家推荐一款基于jquery的鼠标经过图片列表特效。当鼠标经过列表图片的时候,图片放大,且有一个半透明的遮罩层随之移动。效果图如下:

在线预览   源码下载

实现的代码

html代码:

<h1>Direction Aware Hover</h1>
<div class="container cf"> <div class="boxes"><img class="da-image" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/24345/da_image1.jpg"><div class="overlay"></div></div><div class="boxes"><img class="da-image" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/24345/da_image2.jpg"><div class="overlay"></div></div><div class="boxes"><img class="da-image" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/24345/da_image3.jpg"><div class="overlay"></div></div><div class="boxes"><img class="da-image" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/24345/da_image4.jpg"><div class="overlay"></div></div><div class="boxes"><img class="da-image" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/24345/da_image5.jpg"><div class="overlay"></div></div><div class="boxes"><img class="da-image" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/24345/da_image6.jpg"><div class="overlay"></div></div> </div>

css代码:

@import url(http://fonts.googleapis.com/css?family=Roboto+Condensed:300);
h1{
font-family: 'Roboto Condensed', sans-serif;
text-align: center;
}
.cf:before,
.cf:after {
content: " "; /* 1 */
display: table; /* 2 */
} .cf:after {
clear: both;
} /**
* For IE 6/7 only
* Include this rule to trigger hasLayout and contain floats.
*/
.cf {
*zoom:;
} .boxes{
display: block;
width: 30%;
height: 220px;
background: #fe4;
position: relative;
overflow: hidden;
float: left;
margin: 1.5%;
cursor: pointer;
}
.da-image{
min-height: 100%;
width: 100%;
}
.overlay{
display: block;
position: absolute;
width: 100%;
height: 100%;
top: 0%;
left: -100%;
color: #FFF;
background-color: rgba(0,0,0,0.8);
z-index:;
} .container{
width: 1170px;
display: block;
margin: auto;
}

js代码:

//Detect Closest Edge
function closestEdge(x,y,w,h) {
var topEdgeDist = distMetric(x,y,w/2,0);
var bottomEdgeDist = distMetric(x,y,w/2,h);
var leftEdgeDist = distMetric(x,y,0,h/2);
var rightEdgeDist = distMetric(x,y,w,h/2);
var min = Math.min(topEdgeDist,bottomEdgeDist,leftEdgeDist,rightEdgeDist);
switch (min) {
case leftEdgeDist:
return "left";
case rightEdgeDist:
return "right";
case topEdgeDist:
return "top";
case bottomEdgeDist:
return "bottom";
}
} //Distance Formula
function distMetric(x,y,x2,y2) {
var xDiff = x - x2;
var yDiff = y - y2;
return (xDiff * xDiff) + (yDiff * yDiff);
} var boxes = document.querySelectorAll(".boxes"); for(var i = 0; i < boxes.length; i++){ boxes[i].onmouseenter = function(e){
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
var edge = closestEdge(x,y,this.clientWidth, this.clientHeight);
var overlay = this.childNodes[1];
var image = this.childNodes[0]; switch(edge){
case "left":
//tween overlay from the left
overlay.style.top = "0%";
overlay.style.left = "-100%";
TweenMax.to(overlay, .5, {left: '0%'});
TweenMax.to(image, .5, {scale: 1.2});
break;
case "right":
overlay.style.top = "0%";
overlay.style.left = "100%";
//tween overlay from the right
TweenMax.to(overlay, .5, {left: '0%'});
TweenMax.to(image, .5, {scale: 1.2});
break;
case "top":
overlay.style.top = "-100%";
overlay.style.left = "0%";
//tween overlay from the right
TweenMax.to(overlay, .5, {top: '0%'});
TweenMax.to(image, .5, {scale: 1.2});
break;
case "bottom":
overlay.style.top = "100%";
overlay.style.left = "0%";
//tween overlay from the right
TweenMax.to(overlay, .5, {top: '0%'});
TweenMax.to(image, .5, {scale: 1.2});
break;
}
}; boxes[i].onmouseleave = function(e){
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
var edge = closestEdge(x,y,this.clientWidth, this.clientHeight);
var overlay = this.childNodes[1];
var image = this.childNodes[0]; switch(edge){
case "left":
TweenMax.to(overlay, .5, {left: '-100%'});
TweenMax.to(image, .5, {scale: 1.0});
break;
case "right":
TweenMax.to(overlay, .5, {left: '100%'});
TweenMax.to(image, .5, {scale: 1.0});
break;
case "top":
TweenMax.to(overlay, .5, {top: '-100%'});
TweenMax.to(image, .5, {scale: 1.0});
break;
case "bottom":
TweenMax.to(overlay, .5, {top: '100%'});
TweenMax.to(image, .5, {scale: 1.0});
break;
}
};
}

注:本文爱编程原创文章,转载请注明原文地址:http://www.w2bc.com/Article/10925

一款基于jquery的鼠标经过图片列表特效的更多相关文章

  1. 一款基于jquery超炫的图片切换特效

    今天为给大家介绍一款基于jquery超炫的图片切换特效.由百叶窗飞入显示图片.图片消息的时候也是百叶窗渐行渐远.用于图片展示,效果还是非常好,我们一起看下效果图: 在线预览   源码下载 来看下实现的 ...

  2. 一款基于jquery和css3的头像恶搞特效

    今天给大家分享一款基于jquery和css3的头像恶搞特效.这款实例中,一个头像在画面中跳舞,头像还有可爱的帽子,单击下面的按钮可以为头像切换不同的帽子.效果图如下: 在线预览   源码下载 实现的代 ...

  3. 10款基于jquery的web前端动画特效

    1.jQuery横向手风琴图片切换动画 之前我们为大家分享过很多款基于jQuery和CSS3的手风琴菜单和手风琴焦点图插件,比如CSS3响应式垂直手风琴菜单和jQuery横向手风琴图片展示插件.今天要 ...

  4. 基于jQuery弹出层图片动画查看代码

    分享一款基于jQuery弹出层图片动画查看代码是一款鼠标单击文字或图片内容放大显示且含圆角投影效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=&q ...

  5. 基于jQuery带标题的图片3D切换焦点图

    今天给大家分享一款基于jQuery带标题的图片3D切换焦点图.这款焦点图适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 实现的代码. htm ...

  6. 基于jQuery左右滑动切换图片代码

    分享一款基于jQuery左右滑动切换图片代码.这是一款基于jQuery实现的左右滑动切换焦点图代码.效果图如下: 在线预览   源码下载 实现的代码: <div class="v_ou ...

  7. 基于jquery仿360网站图片选项卡切换代码

    今天给大家分享一款基于jquery仿360网站图片选项卡切换代码.这款实例适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预 ...

  8. 基于jQuery 3D旋转明星人物展示特效

    分享一款基于jQuery 3D旋转明星人物展示特效.这是一款来自百度换肤活动的明星旋转展示效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=&quo ...

  9. 一款基于jquery的手风琴图片展示效果

    今天要给大家分享一款基于jquery的手风琴图片展示效果.这款图片的展示效果鼠标经过前是灰色的,当鼠标经过时图片变大且变为彩色.效果图如下: 在线预览   源码下载 实现的代码. html代码: &l ...

随机推荐

  1. nginx1.9+新增tcp/udp代理stream

    [root@rhel nginx-]# ./configure --help --help print this message --prefix=PATH set installation pref ...

  2. 【laravel5.4】Baum无限极分类和collect助手函数、transform()中间件(转换数据)方法使用

    1.目的,无限极分类 /* * getdepartment:获取[当前登录用户对应公司的所有有效部门] * DB::table ==>返回查询构造器结果,不会返回一个collect实例 * 而 ...

  3. npm换国内淘宝镜像

    来源于:http://yijiebuyi.com/blog/b12eac891cdc5f0dff127ae18dc386d4.html 为什么要换源? npm 官方站点 http://www.npmj ...

  4. useradd或者userdel相关用户管理命令不好用

    前言 有时使用useradd或者userdel会出现如下报错: userdel: cannot open /etc/passwd 很明显是/etc/passwd文件导致的 一.查看以及改变文件状态 [ ...

  5. HDUOJ-----4506小明系列故事——师兄帮帮忙

    小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  6. JAVA RMI远程方法调用简单实例[转]

    RMI的概念 RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一台计算机上的对象可以调用另外 一台 ...

  7. HDFS配额管理指南

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_quota_admin_guide.html Hadoop分布式文件系统(HDFS)允许管理员为每个 ...

  8. Python学习笔记015——序列(字节数组 bytearray)

    1 序列 常见的序列有:list   tuple  str  bytes(字节串)  bytearray 2 字节数组bytearray 可变的字节序列,相当于bytes的可变版本. 3 创建函数by ...

  9. 《JAVA与模式》之状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...

  10. Android 弹出有确认按键的对话

    //弹出对话框-------------------------------------------------- private void openDialog(String strMsg, Str ...