1. 下载经我修改过的 LavaLamp 代码
下载 lavalamp.js 文件, 并将文件放置到 js 目录.
2. 加载 jQuery 库
在 head 部分的 <?php wp_head(); ?> 前方添加以下代码: (iNove 主题的 head 部分在 templates/start.php 文件中, 其他主题一般在 header.php 中可以找到.)
1 | <?php wp_enqueue_script('jquery'); ?> |
或者
1 | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> |
两个方法其实都是引用 jQuery 的 JavaScript, 有什么不一样呢? 前者是使用博客服务器上的 jQuery, 如果其他插件也要调用 jQuery 则无需两次装载代码; 而后者是使用 Google 服务器上的代码, 很多其他网站也使用这个文件, 所以它可能已被保存在本机 cache 中.
3. 加载 LavaLamp 菜单
</body> 前方添加以下代码: (iNove 主题的 head 部分在 templates/end.php 文件中, 其他主题一般在 footer.php 中可以找到.)
1 2 3 4 5 6 7 8 9 10 | <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/lavalamp.js"></script>
<script type="text/javascript">
jQuery(document).ready(
function(){
jQuery(function() {
jQuery("#menus").lavaLamp({fx:"backout", speed:700})
});
}
)
</script> |
注意: jQuery("#menus") 是找到 iNove 主题菜单的 ul 部分, 其他主题请替换为相应代码.
4. 在 style.css 中添加 LavaLamp 菜单的样式代码
如果你用的是 iNove 主题, 请下载 lava.gif (我使用的是深色的,下载地址1 谷歌主机地址2)图片并放置到 img 目录中; 删除 style.css 文件中包含 #menu 的样式, 并添加下列 CSS 代码. 其他主题可能需要修改 CSS 代码.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #menus { position:relative; padding-left:10px; float:left; } #menus li { float:left; display:inline; list-style:none; } #menus li a { position:relative; color:#382E1F; height:30px; line-height:30px; padding:0 20px; text-decoration:none; font-size:11px; float:left; z-index:10; text-align:center; } #menus li.current_page_item a { font-weight:bolder; } #menus li.back { background:url(img/lava.gif) no-repeat right bottom; height:30px; position:absolute; z-index:8; } #menus li.back .left { background:url(img/lava.gif) no-repeat left top; height:30px; margin-right:9px; float:none; } #menus li ul { display:none; background:#F4F5F7; border:1px solid #CCC; border-top-color:#A6A6A6; padding:0 5px; } #menus li li { float:none; margin:0 !important; margin:0; padding:0; display:block; list-style:none; } #menus li li a { float:none; display:block; padding:7px 5px; text-decoration:none; width:200px; border-style:solid; border-color:#DDD; border-width:1px 0 0; margin:0; background-image:none; height:auto; line-height:145%; color:#999; text-align:left; } #menus li li.first a { border-top:none; } #menus li li a:hover { color:#382E1F; } |
5. 删除多余的代码 (针对 iNove 主题)
在 templates/header.php 中删除以下代码:
1 | <li><a class="lastmenu" href="javascript:void(0);"></a></li> |
6. 修改子菜单的 JavaScript 代码 (针对 iNove 主题)
打开 js/menu.js 文件并修改 activate 方法.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | activate: function() { this.title.className += ' current'; var pos = cumulativeOffset(this.title); var left = pos[0]; if (this.align == 'right') { var offset = getWidth(this.title) - getWidth(this.body) + this.offset; left += offset; } var top = pos[1] + getHeight(this.title); if(this.offset == -1) { var pos2 = cumulativeOffset(document.getElementById('navigation')); left -= pos2[0]; top -= pos2[1]; } setStyle(this.body, 'left', left + 'px'); setStyle(this.body, 'top', top + 'px'); setStyle(this.body, 'visibility', 'visible'); setStyle(this.body, 'opacity', this.opacity); setStyle(this.body, 'MozOpacity', this.opacity); setStyle(this.body, 'KhtmlOpacity', this.opacity); setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')'); if(this.tid) { clearTimeout(this.tid); } this.tid = setInterval(bind(this, this.appear), 20); } |
按照以上步骤操作应该不会有什么问题的, 而在不同的主题中可能需要修改的地方有两处. 一是第 3 步 #menus 可能要换成其他能找到菜单 ul 的路径; 二是第 4 步的 CSS 需要作针对性修改.
本文于 2009 年 5 月 12 日大幅更新!
转自:http://www.neoease.com/lavalamp-for-wordpress-users/
参考资料: LavaLamp for jQuery Lovers
------------------------------------
090819更新(感谢光影分享解决方案):
iNove 1.4.6 和之前的版本有小小不同
旧版本中使用的当前页面样式为:#menus li.current_page_item a
而新的版本使用的样式标签不一样,应该改为:#menus li.current-cat a
同时要记得修改lavalamp.js中的相关代码哦,将current_page_item修改为current-cat。
这样,当前样式就可以使用了。
如果不想修改样式也可以修改代码了。
多谢麦子兄弟的分享啊,我也用上了lavalamp,给你看看哈
http://imateng.com/2009/08/wordpressinove1-4-6caidanlanlavalampjqueryxiaoguo.htm
[回复]
@光影
看到了!不错!
[回复]
我用的是WP转zblog的inove主题 LavaLamp菜单怎么记住栏目状态啊 总是停留在第一个
[回复]
@逆流鱼
注意iNove原版主题的menu.js文件……
[回复]
@逆流鱼
兄弟看看我的帖子啊,看了就知道怎么解决了,嘿嘿
[回复]
麦子,请教一个问题。
我按照MG12的方法,发现使用lavalamp后,RSS的菜单就会消失,然后看到有朋友说在activate后面的}后加一个,号来解决。虽然RSS菜单弹出来了,但不是渐变的了。
我看到你的RSS弹出订阅菜单是渐变的,而且也用的lavalamp,请问麦子是怎么解决这个冲突的呢?
[回复]
麦子 回复:
十二月 22nd, 2010 at 8:33 下午
@RuiAlessio, 相关的JS代码及引用要注意先后顺序……你的连接怎么打不开?
我在困惑RSS的JS和LAVALAMP菜单的JS在哪里出了问题了lol,因为我是一步步按照教程上写的去操作的,特别困惑。
然后我看到很多朋友有类似的问题,说在activate那一段的最后一个}后面加上一个逗号。加上去后确实能弹出RSS的菜单,可是不是渐渐出现,而是瞬间弹出了。
而我看麦子的就没有这个问题。
麦子能否把你的JS打包传一下,或者告诉大家是JS的调用是插在哪里的呢?小生谢过了先。。
[回复]
RuiAlessio 回复:
十二月 22nd, 2010 at 9:44 下午
@RuiAlessio, 晕乎了,表情显示出来居然和选择的不一样?哈哈~
麦子 回复:
十二月 23rd, 2010 at 10:45 上午
@RuiAlessio, 我用的JS在 http://www.boxcn.net/shared/75skrj53hz 下载,JS要放在jQuery库的后面,在jQuery库后紧跟加载JS试试
RuiAlessio 回复:
十二月 23rd, 2010 at 10:50 上午
@RuiAlessio, 试过,还是无效,我也是那个地址下载的。。。晕了。。。