
滑动门里 LavaLamp 可以算应用广泛使用也比较容易的jQuery插件了。
昨晚 @万戈 童鞋写了篇滑动,jQuery部分看了尝试精简了下,还真成了:DEMO
折腾完之后受此启发,有了码一个 LavaLamp 效果的基本思路,刚又整理完善了下基本搞定完成。
html结构部分,WordPress自定义导航生成,已去除无关代码:
<ul id="menu-menu"> <li class="current-menu-item"><a>首页</a></li> <li class=""><a>折腾</a></li> <li class=""><a>生活</a></li> </ul>
css部分,其中huad里的样式就是滑动的那块样式,高度什么的得自行调整:
#menu-menu{position:relative;} #menu-menu li a{position:relative;z-index:2;} #menu-menu .huad{height:30px;border-top:2px solid #1BA1E2;border-bottom:2px solid #1BA1E2;position:absolute;top:0px;z-index:1;}
jQuery核心代码:
//By ImMmMm.com var mm=$('#menu-menu'); //一般只需修改这儿的ID var mmc=mm.find('.current-menu-item'); //获取需要高亮的对象,current-menu-item为WordPress自定义导航生成 var mml=mmc.position().left; //高亮对象相对父级元素的左边距 var mmw=mmc.width(); //获取高亮对象的宽度 mm.append("<li class='huad' style='left:"+mml+"px;width:"+mmw+"px'></li>"); //追加滑动样式的html代码,并设定宽度和左边距 var mmh=mm.find('.huad'); //获取滑动对象 mm.children('li').hover(function(){ //此导航下li鼠标移上去的事件 var anm=$(this).position().left; //此子项相对父级元素的左边距 var anw=$(this).width(); //此子项的宽度 mmh.animate({left:anm,width:anw},{queue:false,duration:300}); //滑动对象左边距和宽度的自定义动画,300毫秒内触发一次 },function(){ //鼠标移开事件 mmh.animate({left:mml,width:mmw},{queue:false,duration:300}); //滑回 });
上课去鸟,下面几句回来再注释,各位童鞋先看看呗~
19:04 蹭饭归来。继续。
代码还是注释文字多咯,此效果有个BUG:中途浏览器宽度变化,滑动就会错位。原因也明显,最初的左边距是页面打开时就获取了,这个问题就留给有能力的童鞋搞定了~换用.position()相对父级元素获取左边距,完美解决浏览器滚动条影响之前.offset()相对浏览器的左边距问题~
PS:效果可能需要强制刷新下才能见到,关于文章页没效果,这个也好理解,jQuery是判断WordPress自定义导航有current-menu-item高亮时才匹配的,So…

按照习惯,先沙发
搬个板凳先~
都用无觅啦
板凳一下~
首页有BUG,文章页导航根本没效果
文章页本来就没有高亮的样式撒~
木木就是个“优化精简器”
其实原来的lavalamp已经够精简了,功能也比我这个强悍,兼容性也好~
还是前排,准备按照思路鼓捣一番.哈哈
文章页确实没有效果哦 首页效果很赞.
估计是js只能在首页使用,文章页不能使用
嗯 兼容性优待提高呵呵 好几个浏览器的效果都不太一样 ie6都没算在内哦
IE6没测试无视之,其它应该没问题吧?
opera下有1px错位
opera可能是字体造成的错位……
已修复~~
有当前高亮的样式就可以~
效果还是不错的
报告,chrome下错位了几px
限定了下高度,现在OK了吧?
嗯嗯~ 这个轻量级大概可以应用到边栏等有固定class的地方。
如果改成判断menu-item-home的话不知道可不可以在文章页高亮首页……
我只是来看demo的,完全不懂代码
哈~荒淫荒淫~
好复杂,不明白,码盲一个呢
看效果就OK~
这个非常华丽!
哈,兼容性现在也么打问题了~
加了这个就很灵动了~~
很早想加来着,不过就是不想用那jQuery插件,自己写爽~
额。。。lavalamp核心好像就一句话的样子,
不过,好东西,收了
当练手呗,自己写的思路清晰些~
好东西啊,效果太强悍了!
这玩意儿~ 真挺酷的
请问博主,能不能让这个背景颜色滑动到字体上面的时候使得字体改变颜色呢?由于我的颜色基本上都是黑色和白色.
要是使用了这个函数,使背景滑动的话,黑色的背景滑动到字体上,字体(本身是黑色的)就看不见了. 我用css设置放上鼠标后字体颜色变白,然后黑色背景滑动到上面,但是,字体变白是瞬间完成的,黑色背景滑动到上面是要一定时间的,因此这段时间放上鼠标的字体就透明了. 请问博主有什么好的解决方法吗?不怎么会修改这个函数,所以又来请教博主啦.
可能说的不清楚,请博主到我那里看看吧.不好意思了.
这个就得你用css解决了~这个jQuery效果没有控制的
多谢博主解答 了.看来我要改变一下导航栏的样式了…
好东西
可能还要完善,一个模块滑动到另一个模块的时候会往回返回一小下,看着有点别扭额
获取的是当前li对象,导航一个个中间是有空隙的~
厉害. 如果不是使用的wordpress自定义菜单,怎么弄呢?
得用php端判断高亮哪个,就是给当前导航加一个current样式~
之前我也折腾过,因为JQ太菜,玩不起。。。
不知道你这个能自适应菜单的长度吗?
恩,添加了长度变化~
对我没神马用,皮肤什么的,都是浮云,简洁就好~
简洁最难!~
这个可以用上,嘿嘿~~
var mml=mmc.position().left;
不知道是不是这句有问题,写alert,这个地方无效。后面也加不上huad这个类的HTML代码
没获取到.current-menu-item这个吧~
为什么没有获取到呢?我HTML代码是复制你的呀。
那个当前页的样式是WordPress3.0自定义导航生成的~
你没理解我的意思。我按照你写的代码写DEMO,无效。如果你不忙的话,写个DEMO放出来吧
还是把你写的demo让我看吧~
我自己的错,居然没加$(function((){});….
我本是想学点东东的,后来却打了酱油~!
貌似这个lavalamp的js和一些插件的js冲突?
例如这个例子,我在本地测试的。
1,搭建新的wordpress
2,安装了iNove主题
3,安装了插件WP Facebox download,这个插件的效果有点像之前Highslide4WP的弹出一个窗口那样。
可以参考这里的效果显示:
http://www.aedes.us/f/iIqN0.png
4,修改footer.php文件,在body结束标签之前添加加载lavalamp.js的代码(这个时候没把lavalamp.js放进js文件夹,插件的效果还是好的)
5,把lavalamp.js放进js文件夹,lavalamp效果出现,插件效果就出错了。。。
显示如图:
http://www.aedes.us/f/wsdLX.png
希望木木能给与指点,貌似是这个插件的JS和lavalamp的JS冲突,可是我对JS一窍不通,不知道如何着手去解决这个问题。
就是说不丢入js文件夹,单独加载是OK的咯?这肯定是我的js代码没有封闭,导致命名冲突造成的……
已经解决了,用了easing的标准格式修改了js文件:)