(-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" οnclick="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. 分享8款简单大气的jQuery/CSS3图片特效

    自从jQuery问世以后,网页上就流行很多漂亮的图片效果,像淡入淡出或者焦点图等,但是,现在jQuery结合CSS3,我们可以打造更美观更实用的图片特效.下面分享8款简单而又大气的jQuery/CSS ...

  2. java 图片插件_[Java教程]10款功能强大的jQuery/CSS3图片特效插件

    [Java教程]10款功能强大的jQuery/CSS3图片特效插件 0 2014-11-26 03:01:04 1.CSS3实现的底部带滚动云彩效果的网站登录页面 CSS3实现的底部带滚动云彩效果的网 ...

  3. 精心挑选的23款美轮美奂的 jQuery 图片特效插件

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

  4. 基于Jquery的图片自动分组且自适应页面的缩略图展示特效

    今天分享的是一款基于Jquery的图片自动分组且自适应页面的缩略图展示特效,通俗一点说就是JS相册,不过是用JQuery做的,相当不错! This experimental jQuery plugin ...

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

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

  6. Jquery图片特效

    有左右按键交互展示效果,特别突出之处是产品图片有阴影效果,内似flash,是产品展示的首先特效,能增强网站的品味及产品的时间 又一个围剿Flash jQuery图片特效,运动比较流畅流畅,有左右按键交 ...

  7. php中图片放大,jquery实现图片放大缩小特效

    和大家分享一个最近用到的jquery实现图片的放大缩小的特效.具体效果是鼠标移动到图片上,图片自动缩到左上角,右下角出现文字说明,鼠标移走后图片恢复,文字被图片遮挡.非常不错的一个图片特效功能.贴一下 ...

  8. jQuery 实现图片的特效1[原]

    用jQuery实现图片的动画效果非常简单.以下演示 jQuery里面所用到的参数 HIDE SHOW FADEOUT FADEIN 的不同. 在线演示:单击演示 代码分析:  //hide and s ...

  9. jquery toggle方法使用出错?请看这里-遁地龙卷风

    这个函数在1.9之前和1.9之后的用法大不相同 1 1.9之间,用于点击元素时函数的轮流执行 toggle(function(){alert(1);//1,3,5,7...},function(){a ...

  10. 前端工程师之jquery实战案例大集合-彭亮-专题视频课程

    前端工程师之jquery实战案例大集合-17028人已学习 课程介绍         详细介绍了一个js类库的实战应用,这里主要讲解jquery.是一个可以很容易就做各种网页特效的面相对象的方法函数集 ...

最新文章

  1. java 和 Android Base64加密
  2. 一个class运用promise的延时调用
  3. dapper mysql 批量_MySQL数据库之c#mysql批量更新的两种方法
  4. 支持的sql语法_PostgreSQL 12 新特性解读之一|支持 SQL/JSON path
  5. 推荐一个ASP.NET的资源网站
  6. Windiws环境安装轻量级文件服务器ftpserver
  7. 信息学奥赛一本通C++语言——1053:最大数输出
  8. Java基础篇:加入带自变量的方法
  9. HDUacm2095
  10. 电脑中的打印驱动程序如何打包_旧驱动程序会教您如何处理笔记本电脑上的黑屏...
  11. 航空三字代码表_航空公司三字代码表
  12. 评分卡模型分数转换整个流程
  13. [C语言入门可读]学习书籍;学习工具、网站;刷题网站推荐
  14. TI | TM4C123Gx单片机之---ADC笔记
  15. 学习Git第三课 Git本地仓库初始化
  16. node项目部署到云服务器
  17. 2U 4节点Xeon SP服务器 (上):PowerEdge C6420更受重视
  18. 计算机网络实验一:验证性实验
  19. uni-app的安装及使用
  20. matlab绘图时将NaN或Inf设为透明色或特定颜色

热门文章

  1. linux 卸载jdk和安装 -凌晨的光
  2. 程序员简历应该怎么写?
  3. Java 视频资源分享(干货)
  4. 使用R语言中的GWmodel进行GWR模型的运算
  5. 基于SSM的物业管理系统-JSP MYSQL小区物业费管理系统
  6. 人人商城数据字典---链接内容
  7. MUSIC算法及MATLAB实现
  8. 自定义View:Android 仿 PS 选色板
  9. xml样本标签转txt
  10. sqlyog设置自动补全_SQLYog快捷键大全