(-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实战图片特效-遁地龙卷风的更多相关文章

  1. 20+功能强大的jQuery/CSS3图片特效插件

    以下是分享的20几个不错的图片特效插件,基于jQuery和CSS3. 1.jQuery图片下滑切换播放效果 这是一款基于jQuery的焦点图插件,这款焦点图的特点是有向下滑动的动画效果,滑到底部时,有 ...

  2. Web 开发最有用的50款 jQuery 插件集锦——《图片特效篇》

    <Web 开发最有用的50款 jQuery 插件集锦>系列文章向大家分享最具创新的50款 jQuery 插件,这些插件分成以下类别:网页布局插件,导航插件,表格插件,滑块和转盘插件,图表插 ...

  3. 分享jquery实现百叶窗特效的图片轮播

    首先非常感谢网友嘉翼的无私分享,这是他刚在网站扣下来的特效,第一时间与大家分享,jquery实现百叶窗特效的图片轮播 使用方法: 1.引用css文件,css文件里面已经做了注释,基本只需要修改宽高就好 ...

  4. JQuery data方法的使用-遁地龙卷风

    (-1)说明 我用的是chrome49,这个方法涉及到JQuery版本问题,我手里有3.0的,有1.9.1,后面将1.9.1及其以前的称为低版本,3.0称为高版本 测试例子用到的showMessage ...

  5. JQuery simpleModal插件的使用-遁地龙卷风

    (0)写在前面 jquery.simpleModal.浏览器这三者的兼容性,不仅显示在报错上,还体现在所呈现的效果不是预期上. 说一下我的环境 jquery-1.8.3.js jquery.simpl ...

  6. 15个web前端的美轮美奂的 jQuery 图片特效

    jQuery是一个非常优秀的 JavaScript 框架,使用简单灵活,同时还有许多成熟的插件可供选择.其中,jQuery 最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入各种 ...

  7. 一款基于jQuery的图片场景标注提示弹窗特效

    今天给大家分享一款基于jQuery的图片场景标注提示弹窗特效,这款实例适合在图片上标注某个物件,单击弹出详情说明,兼容360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之 ...

  8. 基于jQuery悬停图片变色放大特效

    分享一款基于jQuery悬停图片变色放大特效是一款响应式鼠标悬停图片放大效果代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div style="width ...

  9. 非常酷的jQuery/HTML5图片滑块特效 带弹性菜单

    新的一周刚刚开始,当我迷迷糊糊坐在办公桌前时,又不自主的去看了一些jQuery和HTML5的应用插件,今天我们来看一款非常酷的jQuery/HTML5图片滑块特效,这款插件的特点是图片上不错的弹性菜单 ...

随机推荐

  1. linux下svn 搭建

    linux 下SVN搭建加自动提交更新到指定目录一.安装#yum install subversion       yum安装SVN#mkdir -p /opt/svn/repos       创建s ...

  2. Yocto开发笔记之《Makefile编写》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  3. Runner站立会议06

    开会时间:21.10~21.30 地点:基教负一 今天做了什么:日历布局,晚善日历 明天准备做什么:完善日历界面 遇到的困难:暂无 燃尽图: 会议图:

  4. JavaWeb学习笔记——SAX解析

    import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHa ...

  5. 云服务程序在启动的时候执行Powershell脚本

    如果在云服务程序启动时候,需要执行Powershell脚本,我们需要将脚本嵌入到程序中,并且编写一个cmd来执行这个脚本,具体如下: 1.编写测试的Powershell脚本:每隔10分钟 检测dns ...

  6. SICP— 第一章 构造过程抽象

    SICP  Structure And Interpretation Of Computer Programs 中文第2版 分两部分  S 和 I 第一章 构造过程抽象 1,程序设计的基本元素 2,过 ...

  7. python 多线程就这么简单

    原文地址:http://www.cnblogs.com/fnng/p/3670789.html

  8. 缺少索引导致的服务器和MYSQL故障。

    故障现象: 网站访问缓慢. 数据库RDS: CPU满,连接数满,其他值都是空闲. apache服务器:CPU正常,IO正常,流量报警,内存爆满. 解决思路: 一.没遇到过此情况,一脸懵逼. 二.请教大 ...

  9. php打印数组 --- 打印出漂亮格式的数组

    htm的<pre>标签,能非常标准的显示数组格式 echo "<pre>";print_r($arr);echo "<pre>&quo ...

  10. Jenkins入门总结

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作 在网上貌似没有找到Jenkins的中文的太多的文 ...