JQuery实战图片特效-遁地龙卷风
(-1)写在前面
这个idea是我拷贝别人的,但代码是我自已一点点敲出来的,首先向这位前辈致敬,我用的是chrome49、firefox43、IE9,jquery3.0。言辞请结合代码,避免断章取意。
用到的图片资源在我的百度云盘里
http://yun.baidu.com/share/link?shareid=710445916&uk=1302053889
(0)知识预备
a.z-index
用来设置元素的层,值越大层次越高,当元素发生重叠时,值较大的显示在前面,值较小的显示在后面,值相同时,在DOM树中靠后位置的元素显示在前面。
z-index样式不会改变元素在DOM树中的位置
注意这个css样式存在浏览器兼容问题,当值为负数的时候,不触发绑定在元素上的事情,也不传播事件。只是因为在firefox43多点了几下…
b.overflow
用来处理子元素超出父元素边界的情况,值为hidden时,隐藏超出的部分。
c.position
用来设置元素定位方式,默认值为static,当该值最终不是static时,top、left的值才有效,同时成为子元素的定位点。
当值为fixed的时,相对于浏览器视口的左顶点定位,不随滚动条位置的变化而变化位置。
body、html元素的position的值都是static,不能成为子元素的定位点。所以body子元素的定位在body元素position使用默认值的情况下,是相对于浏览器显示文档的左顶点,因为通常不会对body设置什么边框、外边距,所以看不出什么区别。
d.向JQuery中添加函数
(1)$.函数名,列如$.random,向全局添加
(2)$.fn.函数名,列如$.fn.centerPos,向JQuery对象中添加
(1)html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<script type="text/javascript" src="debug-jquery-3.0.0.js"></script>
<script type="text/javascript" src="base.js" ></script>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<title>为了生活</title>
<style type="text/css">
*
{
margin:0;
padding:0;
}
body
{
background:url("bg.gif");
position:absolute;
}
#container
{
width:902px;
height:470px;
margin:0 auto;
position:fixed;
border:2px #fff solid;
box-shadow:1px 1px 3px #222;
}
#area1
{
width:449px;
height:334px;
}
#area2
{
width:451px;
height:165px;
margin-left:1px;
margin-top:1px;
}
#area3
{
width:451px;
height:167px;
margin-left:1px;
margin-top:1px;
}
#area4
{
width:192px;
height:135px;
clear:left;
margin-top:1px;
}
#area5
{
width:708px;
height:135px;
margin-top:1px;
}
#container div
{
float:left;
position:relative;
overflow:hidden;
}
#container div img
{
position:absolute;
//是z-index生效的前提之一
}
</style>
</head
<body>
<button accesskey="z" onclick="document.location.reload()">刷新</button>
<!—Alt+z可刷新页面-->
<div id="container">
<!—图片的z-index样式在base.js中设置-->
<div
id="area1">
<img
src="area1/1.jpg" />
<img
src="area1/2.jpg" />
<img
src="area1/3.jpg" />
</div>
<div
id="area2">
<img src="area2/1.jpg" />
<img
src="area2/2.jpg" />
<img
src="area2/3.jpg" />
</div>
<div
id="area3">
<img
src="area3/1.jpg" />
<img
src="area3/2.jpg" />
<img
src="area3/3.jpg" />
</div>
<div
id="area4">
<img
src="area4/1.jpg" />
<img
src="area4/2.jpg" />
<img
src="area4/3.jpg" />
</div>
<div
id="area5">
<img
src="area5/1.jpg" />
<img
src="area5/2.jpg" />
<img
src="area5/3.jpg" />
</div>
</div>
</body>
</html>
(2)js文件
$(function()
{
//$开头的是JQuery对象
var $container = $("#container"),
$areas =
$container.find("div"),
maxZindex = 9999;
$areas.bind("mouseenter",function()
{
var index =
$(this).data("index"),//div中层次最高的图片索引
$imgs = $(this).find("img"),
length =
$imgs.length,
$img =
$imgs.eq(index),
random =
$.random(0,7),
// random是自定义的方法
css,
nextImg;
if(index ==
length-1)
{
nextImg =
$imgs.eq(0)[0];
}
else
{
nextImg =
$imgs.eq(index+1)[0];
}
nextImg.style.zIndex = maxZindex-1;
//switch不支持隐式转换,0和”0”是不匹配的
switch(random)
{
case 0:css
= {top:"-"+$img.height()}; break;
case 1:css
= {left:"-"+$img.width()};break;
case 2:css
= {top:$img.height()};break;
case 3:css
= {left:$img.width()};break;
case 4:css
= {top:"-"+$img.height(),opacity:0};break;
case 5:css
= {left:"-"+$img.width(),opacity:0};break;
case 6:css
= {top:$img.height(),opacity:0};break;
case 7:css
= {left:$img.width(),opacity:0};break;
}
$img.animate(css,"swing",function()
{
this.style.top =
"0px";
this.style.left =
"0px";
this.style.zIndex = 1;
nextImg.style.zIndex = maxZindex;
if(random>3)
{
$(this).css("opacity",1);
}
});
if(index ==
$imgs.length-1) index=-1;
$(this).data("index",++index);
}).each(function()
{
$(this).data("index",0);//层次最高的图片在DOM树中的索引
var $imgs =
$(this).find("img");
$imgs.each(function(index)
{
this.style.zIndex
= maxZindex-index;
})
}).bind("click",function()
{
$areas.trigger("mouseenter");
})
$container.centerPos();//元素相对于浏览器视口水平垂直居中
window.onresize = function()
{
//随着浏览器视口大小的变化动态的改变元素的位置
$container.centerPos();
}
})
//产生大于等于min、小于等于max的值,值不在filter一维数组中
$.random = function(min,max,filter)
{
var i,
n = Math.floor(Math.random()*(max-min+1)+min);
if(filter != undefined
&& filter.constructor == Array)
{
if(filter.constructor
== Array)
{
for(i=filter.length-1;i>-1;i--)
{
if(n
== filter[i])
{
n
= Math.floor(Math.random()*(max-min+1)+min)
i =
filter.length;
}
}
}
else
{
window.console.warn("random第三个参数应为一维数组");
}
}
return n;
}
//top、lef的值根据父元素的宽和高计算,也就是父元素是子元素的定位点
$.fn.centerPos = function()
{
var parent;
this.each(function(index)
{
parent =
this.parentNode;
if(parent ==
document.body)
{
parent = window;
}
var position =
$(this).css("position");
if(position ==
"fixed" || position=="absolute")
{
$(this).css("left",($(parent).width()-this.offsetWidth)/2+"px")
.css("top",($(parent).height()-this.offsetHeight)/2+"px");
}
else
{
window.console.error("没有设置有效的position值");
}
})
return this;
}
JQuery实战图片特效-遁地龙卷风的更多相关文章
- 20+功能强大的jQuery/CSS3图片特效插件
以下是分享的20几个不错的图片特效插件,基于jQuery和CSS3. 1.jQuery图片下滑切换播放效果 这是一款基于jQuery的焦点图插件,这款焦点图的特点是有向下滑动的动画效果,滑到底部时,有 ...
- Web 开发最有用的50款 jQuery 插件集锦——《图片特效篇》
<Web 开发最有用的50款 jQuery 插件集锦>系列文章向大家分享最具创新的50款 jQuery 插件,这些插件分成以下类别:网页布局插件,导航插件,表格插件,滑块和转盘插件,图表插 ...
- 分享jquery实现百叶窗特效的图片轮播
首先非常感谢网友嘉翼的无私分享,这是他刚在网站扣下来的特效,第一时间与大家分享,jquery实现百叶窗特效的图片轮播 使用方法: 1.引用css文件,css文件里面已经做了注释,基本只需要修改宽高就好 ...
- JQuery data方法的使用-遁地龙卷风
(-1)说明 我用的是chrome49,这个方法涉及到JQuery版本问题,我手里有3.0的,有1.9.1,后面将1.9.1及其以前的称为低版本,3.0称为高版本 测试例子用到的showMessage ...
- JQuery simpleModal插件的使用-遁地龙卷风
(0)写在前面 jquery.simpleModal.浏览器这三者的兼容性,不仅显示在报错上,还体现在所呈现的效果不是预期上. 说一下我的环境 jquery-1.8.3.js jquery.simpl ...
- 15个web前端的美轮美奂的 jQuery 图片特效
jQuery是一个非常优秀的 JavaScript 框架,使用简单灵活,同时还有许多成熟的插件可供选择.其中,jQuery 最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入各种 ...
- 一款基于jQuery的图片场景标注提示弹窗特效
今天给大家分享一款基于jQuery的图片场景标注提示弹窗特效,这款实例适合在图片上标注某个物件,单击弹出详情说明,兼容360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之 ...
- 基于jQuery悬停图片变色放大特效
分享一款基于jQuery悬停图片变色放大特效是一款响应式鼠标悬停图片放大效果代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div style="width ...
- 非常酷的jQuery/HTML5图片滑块特效 带弹性菜单
新的一周刚刚开始,当我迷迷糊糊坐在办公桌前时,又不自主的去看了一些jQuery和HTML5的应用插件,今天我们来看一款非常酷的jQuery/HTML5图片滑块特效,这款插件的特点是图片上不错的弹性菜单 ...
随机推荐
- HTML之表格制作
如何制作一个表格? 如何制作一个表格呢? 观察如下代码: <!DOCTYPE html> <html lang="en"> <head> &l ...
- JavaWeb---总结(六)Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- MyEclipse取消自动跳到Console窗口
在Myeclipse中当全屏查看其它文件时,如果控制台有东西输出,就会弹出控制台窗口,如何取消? 方法1: -->右键在console窗口中点Preferences, -->将Show w ...
- win8启动文件夹
进入C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp.鼠标右键选中粘贴,将软件快捷方式粘贴到启动目录 进入文件夹时路径可能是C: ...
- NumberFormat类
NumberFormat表示数字的格式化类,即可以按照本地的风格习惯进行数字的显示. NumberFormat是一个抽象类,和MessageFormat类一样,都是Format类的子类,本类在使用时可 ...
- JavaScript学习笔记——DOM_document对象
javascript-document对象详解 DOM document(html xml) object modledocument对象(DOM核心对象) 作用: 1.内容 innerHTML 2. ...
- Order Independent Transparency
http://on-demand.gputechconf.com/gtc/2014/presentations/S4385-order-independent-transparency-opengl. ...
- MBProgressHUD上传照片进度提示
第一步,控制器先来个属性 @property (strong, nonatomic) MBProgressHUD *HUD; 第二步,显示与隐藏的调用方法 - (void)hudTipWillShow ...
- 新版WampServer项目路径前面没有localhost
1.第一种情况:http://localhost/页面中不能访问 解决方式: 在www目录下找到index.php 然后修改里面查找$projectContents 或直接查看338行代码 修改'ht ...
- chain.doFilter(request,response)含义
过滤器的生命周期一般都要经过下面三个阶段: 初始化 当容器第一次加载该过滤器时,init() 方法将被调用.该类在这个方法中包含了一个指向 Filter Config 对象的引用.我们的过滤器实际上并 ...