不知大家注意到本博右上角的浏览器动画没,九个浏览器图标循环渐隐,我知道速度很慢 ,但要的就是不经意间的华丽,如锦衣夜行,,,
其实现在一些看起来很炫的动画完全可以由js来实现,完全不需要flash(i hate flash! ),本例就来讲下如何使用强大的jquery来实现这一效果.
首先,你需要在你的博客上添加jquery,wordpress自带jquery,但最好使用Google提供的Google AJAX Libraries API.
一来减轻你服务器负担,二来Google的速度确实不错,更可能人们在别的地方早已经缓存了这个文件,毕竟jquery现在很流行的.
仔细观察右上角动画的效果,构想下它的思路,假设是你,如何实现呢
首先,它需要占用一块地方(废话 ),把九张图片堆叠在一起,就像叠扑克牌,保证每张图片大小方位全部重合(你也可以不重合,看实际需求,现在只讲如何实现这个效果),你可以从这里下载到这九张图片.
然后假设你从最底下抽上来一张放到上面,但其实这张是隐形的,然后让它慢慢显现,完毕后再从底下抽出一张,重复,重复,思路很简单,idea is important!
接下来,让我们慢慢一步步实现它,
先创建一个无序列表(为什么要无序?因为我们要不停的改变它的顺序),把这九张图片做为每一列的背景.
1 2 3 4 5 6 7 8 9 10 11 | <ul id="showWeb"> <li style="background-image: url('1.jpg')"></li> <li style="background-image: url('2.jpg')"></li> <li style="background-image: url('3.jpg')"></li> <li style="background-image: url('4.jpg')"></li> <li style="background-image: url('5.jpg')"></li> <li style="background-image: url('6.jpg')"></li> <li style="background-image: url('7.jpg')"></li> <li style="background-image: url('8.jpg')"></li> <li style="background-image: url('9.jpg')"></li> </ul> |
给它们添加样式,先要把ul固定起来
#showWeb{ position:absolute; bottom:10px; right:10px; width:256px; height:256px; } |
再把li们都堆叠起来
#showWeb li{ width:256px; height:256px; position:absolute; left:0; top:0; } |
然后编写js
1 2 3 4 5 6 7 8 9 10 11 12 13 | var $explorer = jQuery('#showWeb li'); function explorerchange(index){ var pre = index; if(index == 8){ index = -1; } index +=1; $explorer.css('z-index','1').not($explorer.eq(pre)).hide(); $explorer.eq(index).css('z-index','100').animate({opacity:'show'},8000,function(){ explorerchange(index); }); } explorerchange(0); |
第一行是选取要变化的 li 组成一个jquery数组,
第二行是定义方法的名称,传入一个参数,这个参数就起一个堆叠顺序的序号作用
接下来将序号加1,并存储上一次的序号(因为我们要把除了上次渐显出的那张图片外的其他图片隐藏掉),
如果序号超过数量,则给它初始化,(留一个问题,为什么是8而不是9呢 )
1 2 3 4 5 | var pre = index; if(index == 8){ index = -1; } index +=1; |
然后就是重点来了,强大的jquery给了我们很多的方法,我们不需要知道他们是如何运作的,只要知道如何使用及使用后有什么效果就可以了。
先把所有的li隐藏但独独剩下刚才显示的那一个(因为它要给渐显出来的那张扑克当底)
1 | $explorer.css('z-index','1').not($explorer.eq(pre)).hide(); |
根据序号抽出一张扑克放到顶层
1 | $explorer.eq(index).css('z-index','100') |
并使它渐显出来,间隔为8秒
1 | $explorer.eq(index).css('z-index','100').animate({opacity:'show'},8000) |
但这样只会渐显一次,怎么办呢,让方法回调它自己就ok啦,也就是方法再执行一遍它自己,然后它就会一遍一遍又一遍,子子孙孙无穷匮也
1 2 3 | $explorer.eq(index).css('z-index','100').fadeIn(8000,function(){ explorerchange(index); }); |
最后执行代码
1 | explorerchange(0); |
忘说了,js代码要放在ul标签后面,要不然它不执行哦 。
好了,现在谁能说出为什么是8而不是9呢,没错,因为数组的index是由0开始的,所以我们需要把序号减一。
看了这么多,你真正懂了吗,还不快动手试一试,有问题的话请留言,如果有时间我一定答复你。
好~~不错,以后多出点教程~~你表情用插件没~~怎么实现的啊?
推荐你使用Custom Smilies插件,
谢谢今晚帮忙~~~! ——小斌
呵呵,您太客气了! :d1
学习咧…
把js放在google确实会提快一点,呵呵…
咱的服务器没法和google比…
呵呵,其实js还可以进行再压缩,不过那样不利于修改,小文件的就不用费那心力了
今天来是想来请教你个问题:
我今天用IE test 检测我站的时候,发现在IE6下会弹出错误: 脚本错误 ‘px’ is undefined
然后IE6下 Logo图片和下拉菜单不显示,IE6 IE7下嘴下面的翻页按钮下面一点点也会有点问题,能不能给点思路哦?
先谢谢你咯…
:e3 你的页头好像是js生成的,不过为什么你装了prototype还装jquery呢,这两个不太兼容,是不是你使用了$了?
好像有用 var $j = jQuery.noConflict(); 只是在IE6下头部不会显示,IE7和IE8下都正常,也许是该死的IE6的支持问题吧.
我现在直接用容错代码先隐藏了.
底部的翻页有没有什么解决方案哦?我有试着在css里加入zoom:1; ,不过貌似没啥反应.唉唉…
不懂网页和js的我太可悲了…
想实现分页的话你可以看下这篇啊http://immmmm.com/wordpress-page-navigation-without-plugins.html
分页实现咧,只是显示不正常而已…
我晚上回去自己再慢慢调调吧,不行再说….
:c0 呵呵,我在工作,晚上回去再给你看看
你好!有一个同类问题想请教:
$(document).ready(function(){
$(“.dotA”).animate({top:”100px”},500);
$(“.dotB”).animate({top:”200px”},500);
$(“.dotA”).animate({top:”0px”},500);
$(“.dotB”).animate({top:”0px”},500);
});
页面打开后只跳动一次,如何更改才能使两个小球无限次循环跳动?你的代码不会用唉……
你可以这样写:
$(function(){
function ae(){
$('.dotA').animate({top:'100px'},500).animate({top:'0px'},500);
$('.dotB').animate({top:'200px'},500).animate({top:'0px'},500,ae);
}
ae();
})
注意不要使用中文字符,并且不推荐使用类选择器,效率太低
没事看来看看而已,不必惊慌….
哈哈,随时欢迎前来恐吓骚扰
左边的导航做的很好玩啊~~
呵呵,一般般啦
也不更新,我天天来溜溜都知道看啥咧…
这段时间工作太忙啊,慢慢来么,不要急!
强烈要求更新。。。。
前两天写了一些脚本,晚上廉价卖给你一些哇…
还有做的几个软件…
怎么最近都没更新啦
Nice site ….)
;a6 不知道怎么弄
有哪里讲得不清楚么?
怎么跑不出来
var pre = index;
if(index == 8){
index = -1;
}
index +=1;
你可以在后面加一句alert(index);看看是否跑起来了
导航菜单相当赞啊,,是css+jquery弄的么
css3的动画,没有js的
能否设置图片停留显示的时间呢?
$explorer.eq(index).css('z-index','100').animate({opacity:'show'},8000,function(){
explorerchange(index);
});
修改为:
$explorer.eq(index).css('z-index','100').animate({opacity:'show'},8000,function(){
setTimeout(function(){explorerchange(index)},4000);
});
其中4000就是你设置停留显示的时间,单位毫秒,自己修改
受教了 在$explorer.css(‘z-index’,’1′).not($explorer.eq(pre)).hide();后是不是应该加一句
$explorer.eq(pre).fadeOut(8000) 要不好像之前那张图片会突然消失 不是页面右上角的效果
不知道是不是?
你理解错误了,不是一个一个消失,而是一开始就全部消失然后一个一个渐显,为了不突兀,所以一开始会留下一张是直接显示的
找到啦~~~
博主,你的评论用的是什么插件啊
太棒了,感谢楼主