jQuery 实现的背景渐显渐隐效果
切入正题前,我先唠叨几句,放假对我来说真不是一件好事,感觉比上班还要忙,虽然有了更多可支配时间,但是有着和可支配时间完全不成正比的待办事宜。打开QQ的消息盒子,至少有20+条消息我还没有来的及查看,和各位说声抱歉了。好在还有 WordPress 作为我的精神支柱,每天调戏一下 WordPress,已经成了我的习惯。今天趁坐在电脑前的一会儿功夫,把小黑托付我的主题继续做下去,前两头说研究头部的背景自动更换功能,今天再把导航的另一个效果也折腾了,那就是 jQuery 实现的背景图片的渐隐渐显效果。
这个是仿腾讯 CDC 的导航效果,大家可以先看看 CDC 的,腾讯一直在山寨,今天轮到腾讯被山寨,我就是“寨主”!可以看到腾讯 CDC 的导航按钮的渐隐渐显效果是用 Flash 做的,但是我觉得用 Flash 做一个导航对小博客而言有点太奢侈了,而且对收录也不太好(腾讯当然是不愁收录的问题~)所以我想着法儿的用 jQuery 来实现它。我做了一个 DEMO(点此查看),不过很可惜,这个效果只在 Firefox、Chrome、Opera 等高级浏览器下有效果,在 IE 这等低智商浏览器下很杯具。所以就用了普通效果来处理。欲看此 DEMO,还请更换高级浏览器。
方法如下:
1、载入 jQuery
我没有时间测试这个需要什么版本的 jQuery 了,反正我用的是 jQuery 1.3X。
2、Html 部分
<div id="header">
<ul id="nav">
<li class="current_page_item"><a id="altbg1"href="#">页面一</a></li>
<li><a id="altbg2" href="#">页面二</a></li>
<li><a id="altbg3" href="#">页面三</a></li>
<li><a id="altbg4" href="#">页面四</a></li>
<li><a id="altbg5" href="#">页面五</a></li>
</ul>
</div>
<ul id="nav">
<li class="current_page_item"><a id="altbg1"href="#">页面一</a></li>
<li><a id="altbg2" href="#">页面二</a></li>
<li><a id="altbg3" href="#">页面三</a></li>
<li><a id="altbg4" href="#">页面四</a></li>
<li><a id="altbg5" href="#">页面五</a></li>
</ul>
</div>
3、执行脚本
jQuery(document).ready(function($) {
var num = 1;
while (num <= 5) {
var abc = num.toString();
jQuery('#altbg' + abc).append('<span id="hover' + abc + '"></span>');
jQuery('#hover' + abc).css('opacity', 0);
num++;
}
jQuery('#hover1').parent().hover(function() {
jQuery('#hover1').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover1').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover2').parent().hover(function() {
jQuery('#hover2').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover2').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover3').parent().hover(function() {
jQuery('#hover3').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover3').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover4').parent().hover(function() {
jQuery('#hover4').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover4').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover5').parent().hover(function() {
jQuery('#hover5').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover5').stop().animate({ opacity: '0' }, 300)
});
});
var num = 1;
while (num <= 5) {
var abc = num.toString();
jQuery('#altbg' + abc).append('<span id="hover' + abc + '"></span>');
jQuery('#hover' + abc).css('opacity', 0);
num++;
}
jQuery('#hover1').parent().hover(function() {
jQuery('#hover1').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover1').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover2').parent().hover(function() {
jQuery('#hover2').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover2').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover3').parent().hover(function() {
jQuery('#hover3').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover3').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover4').parent().hover(function() {
jQuery('#hover4').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover4').stop().animate({ opacity: '0' }, 300)
});
jQuery('#hover5').parent().hover(function() {
jQuery('#hover5').stop().animate({ opacity: '1' }, 300)
},
function() {
jQuery('#hover5').stop().animate({ opacity: '0' }, 300)
});
});
因为五个按钮的脚本部分有重复的地方,我就用了 while 循环,不过我觉得应该还可以精简,实在不会了,请教一下在座的高人,帮帮我吧。
4、样式部分
#header ul span{background:url('images/nav.png') no-repeat 0 -22px;}
因为时间有限,本文写的比较粗糙,仅作学习笔记,请阅后即焚。
与
Javascript,jQuery
相关的文章-
jQuery/JavaScript 实现的异步加载图片2011年04月10日 -
JQuery 鼠标滑动渐隐渐显效果2010年05月5日 -
JQuery 鼠标提示特效之 Sweet Titles2010年03月14日 -
input 输入框获得/失去焦点时隐藏/显示文字2012年05月5日
博主,貌似你就没有span标记
要是能预览就好了
已阅,正起火焚之。
这效果可以称作是华丽了
有时间了我也学你这样折腾下。
这种现实非常拉风好看,有空也折腾一下先
有意思,顶一下
jQuery 真的不熟啊…那個代碼有點長,看了暈昏昏,好像看到評論裡有人提供比較短的代碼,是選擇器的關係嗎?呼呼~我應該去好好看我那本《鋒利的jQuery》,最近太熱、身體變弱、腦袋太不清楚也太不用功了
不過我每次都能在萬戈這裡看到新玩意兒啊~真不愧是折騰大帝!
哈哈,不敢称帝呀,称王就够了,哇哈哈哈哈~
哈哈~那就叫你萬戈大王!來,大夥叫大王(鞭!)
时间少都能把博客安排的井井有条,真是佩服啊。
jQuery(#nav li).hover(
function(){
jQuery(this).animate({opacity:'0'}, 300);
},
function() {
jQuery(this).animate({opacity:'0'}, 300);
}
);
额,这样应该就可以了,不用那么长的 ~
试过鸟,不行,我要加Gtalk骚扰你
jQuery(#nav li).hover(
function(){
jQuery(this).stop().animate({opacity:'1'}, 300);
},
function() {
jQuery(this).stop().animate({opacity:'0'}, 300);
}
);
囧,昨天太迷糊写错鸟 ~
这个先试试,我出去吃个早饭 ~ 回头gtalk吧 ~
谢谢你亲耐滴小邪
已经搞定啦
太好了,可以用就好 呵呵 ~ 不客气 ~
咱们谁跟谁 ~ 嘎嘎 ~
每篇文章前面都要唠叨几十句是万戈的强项
哈哈,熟悉的朋友可以直接跳过看正文嘛
每次来你这里人气总是这么的高啊。
wow~ ⊙o⊙这效果酷~~不过JQuery代码应该还可以精简很多的~
可是。。。我不会精简,是用javascript的思路写的脚本。。。
天上的云彩飘过,不明真相的围观群众路过,
什么时候去调戏百度?
今日发现万戈.im 第6名了。。
我才30多
我要加把努力啊。。
厉害啊,折腾吧折腾吧,呵呵..
分享咯楼主。
自从用了FF等就一点都不想碰IE了
我表示看不出效果...
效果不是很明显,主要是颜色没处理到位
这个Jquery是被WP冲突过的了
可以拿来做成肉影肉现
抱歉,发生意外情况,阻碍了 Google 阅读器完成请求。
莫非万戈这里有红果果的敏感词~~~~
还在折腾这个啊
我最爱看你博客了,全是技术贴
哈哈,受宠若惊,谢谢
万戈,万戈,你要疯了么?
快了快了,哈哈
毛玻璃,今天我同事这么形容
哥还以为是PS效果,原来是JQuery做的……强大
P.S.腾讯太没出息了,连这个也抄袭
是哥抄袭的腾讯
老万快来救救我啊……在google里site:dudo.org,然后点击查询一天内、一周内收录情况都没有内容,点击一个月内的可以找到最近发表的文章,但是收录时间显示的是7月20日,可文章明明是8月才发表的,实在没办法了,帮我看看是哪里的问题好不?
...我不太懂seo耶,也说不清个啥情况
我是来看看有没有改进方案的...
改进方案今天折腾,嘿嘿
不过问一下什么叫CDC? 我百度一下没查到啊。
果然和 腾讯的CDC一模一样.
在IE下就不一样了。。。
要好好利用jQuery选择器的强大性能
大侠能不能给指点一下呀?帮我这段脚本精简一下吧
我觉得CDC上配图还真不赖
已经有人仿过他这个主题了,他家也是wp
主题一般般吧,但每张配图这么好看可不是随随便便仿的来的
IE不支持是因为那个opacity的原因吧
我觉得用图片位置变化可以兼容IE
用fadeIn()和fadeOut()的话IE也可以滴
但很难看。。
将速度调慢一点,觉得对于万戈那个demo还是可以的
恩,是滴
$(#nav li).hover(function(){
$(this).~~~
});
这样好,jQuery是可以隐式迭代的,无需手动循环选择
能不能具体说说呀?我对jQuery连皮毛都不懂,谢谢你啊~
$(#nav li).hover(function(){
function(){$(this).animate({ opacity: '0' }, 300)},
function(){$(this).animate({ opacity: '0' }, 300)}
});
嗯,我也是初学,不知道那个.stop()有什么作用,这里就略去了;
另,觉得可以专门为鼠标指向时加个css的类,比如.liHover,
然后上面那个函数里的语句就可以用.addClass('liHover')和.removeClass('liHover')来处理了
还差个鼠标移开的效果吧
$(#nav li).hover(function(){
$(this).animate({ opacity: '0' }, 300);
}, function() {
$(this).animate({ opacity: '1' }, 300);
});
哦,我那里那个hover后面不需要那个function(){}闭合就可了
结果就是你这样子,汗,果然不熟悉
我也不会jQuery,依葫芦画瓢
不错
靠 我用的是低智商的浏览器
还不快换!
FF我用来代理登陆AdSense的
效果很拉风,IE是杯具
是拉轰
今天怎么没有人灌水?奇怪了
我來了
希望你以后都将demo做成IE看不了的。。那样就推动标准浏览器发展了。。
。。。我还特地帮IE另外处理了一下呢,我错了
……调戏WordPress?万哥威武~~
js部分为什么不用“#nav li”,id看着好多啊。
因为对每个按钮都要单独处理,我也觉得这很麻烦
重复的代码很多啊,应该可以合并下
确实没啥人啦
你帮我合并吧
代码有点长,应该可以换选择器,但我不懂
我也懒得再研究了,能实现就好
美女寨主
今天人怎么这么少呢?
这两天技术水份太多,把人吓跑了
突然发现你已经水过小闇MM了
别被她发现了
好像她这两天没上来呢
去mmmmm那里灌水了
是不是少了我
我觉得这个demo效果更自然:
http://snook.ca/technical/jquery-bg/
这个我也想过,但是对我这里不适用
我觉得最后一个效果挺不错的
我靠 楼上的够快的
都是神人能不快么
板凳漏了。。
擠~
来了
地板
擠擠~
我也挤挤
地板都抢
sf
你一天到晚都守在twitter上。。
刚吃完饭回来嘛
来得早不如来的巧
我不在你成了沙发王了,老实说这四天占了几个沙发?
就一个吧。。
我一直都没网上