14 May 2009在主题中添加 LavaLamp 菜单效果
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 中.
- 加载 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 部分, 其他主题请替换为相应代码.
- 在 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: 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: 5px; } #menus li li { float:none; margin: !important; margin:; padding:; 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 ; margin:; 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; } |
- 删除多余的代码 (针对 iNove 主题)
在 templates/header.php 中删除以下代码:
1 | <li><a class="lastmenu" href="javascript:void(0);"></a></li> |
- 修改子菜单的 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[]; 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[]; 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。
这样,当前样式就可以使用了。
如果不想修改样式也可以修改代码了。
Til next time,
Jason at 00:00