dedecms模版制作活动的折叠菜单

简介: 需要做成这种样式 url请求为这样: 1 http://m03.com/plus/list.php?tid=19 这些菜单项都有对应的tid项,页面刷新后,应该将所有的菜单折叠起来,对于tid=19的菜单项,要判断他是否是子菜单,如果是子菜单,应该讲它所在的整个菜单项打开并将它自身加上active样式,否则不用打开整个菜单,直接加active样式。

需要做成这种样式

url请求为这样:

1 http://m03.com/plus/list.php?tid=19

这些菜单项都有对应的tid项,页面刷新后,应该将所有的菜单折叠起来,对于tid=19的菜单项,要判断他是否是子菜单,如果是子菜单,应该讲它所在的整个菜单项打开并将它自身加上active样式,否则不用打开整个菜单,直接加active样式。并且如果当前菜单下没有子菜单,应该讲菜单项前的按钮去除。

这里准备了两张图片

right_g.png和bottom_g.png

首先结合dedecms模板代码生成折叠菜单
 1 <ul class="flod_menu">
 2     {dede:channelartlist row=5 typeid=10} 
 3     <li {dede:field name='typeid' runphp="yes"}@me = (@me==$_GET['tid'] && @me!=10 ? 'class="flod_menu_item active_top"' : 'class="flod_menu_item"');{/dede:field}>
 4         <img src="{dede:global.cfg_templets_skin/}/images/arrow/right_g.png" class="btn"/>
 5         <a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></span>
 6         <ul class="flod_menu_sub">
 7             {dede:sql sql='Select * from dede_arctype where reid=~id~  ORDER BY id limit 0,7'}
 8             <li  [field:id runphp="yes"]@me = (@me==$_GET['tid'] && @me!=10 ? 'class="flod_menu_item_sub active"' : 'class="flod_menu_item_sub"');[/field:id]><a href='[field:typedir function='str_replace("{cmspath}","",@me)'/]' target='_blank'>[field:typename/]</a></li>
 9             {/dede:sql}
10         </ul>
11     </li>
12     {/dede:channelartlist}
13 </ul>

这里有些知识,比如如何在dedecms模板中生成三级菜单,以及如何获取url中的请求参数($_GET['XXX'])。

然后再通过JavaScript代码折叠或打开菜单,去除多余的按钮
 1 //对于没有下级菜单的,将按钮隐藏
 2 $(".flod_menu .flod_menu_item > .btn").each(function(index,element){
 3     var hasLi = $(this).nextAll(".flod_menu_sub").children().is("li");
 4     if(!hasLi){
 5         $(this).css("display","none");
 6     }
 7 });
 8 //找到当前活动的节点
 9 $(".flod_menu_sub").each(function(index,element){
10     var isActive = $(this).children(".active").is("li");
11     if(isActive){
12         $(this).css("display","block");
13     }
14 });
15 //为按钮绑定单击事件
16 $(".flod_menu .flod_menu_item > .btn").click(function(){        
17     var cSrc = $(this).attr("src");
18 
19     if(cSrc.indexOf("right")>=0){
20         //处于折叠状态,进行打开
21         $(this).attr("src",cSrc.replace("right","bottom"));
22         $(this).nextAll(".flod_menu_sub").css("display","block");
23     }
24     else{
25         //处于打开状态,进行折叠
26         $(this).attr("src",cSrc.replace("bottom","right"));
27         $(this).nextAll(".flod_menu_sub").css("display","none");
28     }
29 });

 

目录
相关文章
|
11月前
|
开发工具 UED 开发者
在微信小游戏制作工具中实现各种效果和功能的按钮
在游戏设计中有一个名词叫“反馈”,大体就是指当玩家在进行游戏时,游戏所给予玩家的一些东西,比如常见的在点击按钮时,按钮会变换颜色,或进行缩放,或播放音效等等。总之,不论玩家在游戏中进行任何的操作,游戏都应该给予玩家一个合理的反馈。让玩家能够明白他的操作所获得的结果是什么。
269 0
|
11月前
|
小程序 开发者
如何制作一个闪屏页面
闪屏(Splash)指的是当你打开一个应用时,首先映入眼帘的那个界面。通常闪屏页面都会比较简单,因为要一闪而过(这大概就是为什么叫做闪屏了),一般都会放置产品的 LOGO,在游戏中通常会放置游戏制作团队或者工作室的 LOGO。
146 0
|
数据可视化
搭建完菜单后运行不显示菜单的原因及其解决方法(拼图小游戏)
在搭建完菜单以后,程序不报错也能运行,但是运行结果就是一个框,就跟没有搭建过菜单一样,如下图所示,没有我们想象中的菜单栏,更别说有下拉菜单了,但是如果将搭建菜单的代码单独放到一个测试类中去测试一下的话,会显示出来菜单,也就是说我们搭建菜单的核心代码是没有问题的
124 0
搭建完菜单后运行不显示菜单的原因及其解决方法(拼图小游戏)
这份菜单能修改吗;这份菜单可以修改;菜名和价格的展示;菜单的信息量好大
某平台实训 python这份菜单能修改吗;这份菜单可以修改;菜名和价格的展示;菜单的信息量好大
|
Java 数据安全/隐私保护
JSP+Servlet培训班作业管理系统[3]–点击菜单加载功能页面
本文目录 1. 背景 2. 创建演示页面 3. 构造超级链接 4. 实现jsp页面的动态包含 4.1 修改左侧菜单部分的超级链接。 4.2 创建用于导航的servlet 4.3 右侧区域动态包含 5. 测试验证
215 0
在不同的页面上显示不同的Joomla模板样式
模板样式是Joomla中非常强大的功能。它们允许您将同一模板的不同版本分配给特定页面。 在本教程中,我将向您展示如何分配两种模板样式。我们将为主页分配一种样式,为站点的其余部分分配另一种样式。 第1步.复制模板样式安装模板时,默认情况下会生成单个模板样式。
如何隐藏Joomla首页菜单
随着网站变得越来越大,越来越复杂,在网站导航中显示主页菜单项通常变得不那么重要了。 作为Joomla网站所有者,您可能希望隐藏网站导航中的“主页”链接。在本教程中,我将逐步向您展示如何实现这一目标。 步骤1。