打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用CSS实现滑动菜单栏

滑动菜单示例



滑动菜单多用于菜单项目较多且菜单可归纳到少数类别的场合,点击类别滑动条会上下滑动以隐藏或显示其下的子菜单.其典型应用便是Visio中滑动菜单样式(上图).
本人在Web中实现了类似的控件(下图),拿出来希望和大家一起交流一下.

滑动效果的实现


本文中使用无序列表作为滑动条下的子菜单的实现,出现滑动效果实际是控制子菜单的隐藏和显示.
控制子菜单的隐藏和显示改变UL的display属性即可,当其为block时显示菜单,其为none时不显示,我们可以用JS来实现这一效果.
滑动块和菜单的页面代码示例如下:

实现效果之一

滑动块和菜单的页面代码示例

<ul class="stickedUl" onclick="showHideUL('poems')">
  诗歌
</ul>
<ul class='slidedUl' id='poems' style='display:block'>");
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=1">春歌</a></li>
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=3">侠客行(李白)</a></li>
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=4">南陵别儿童入京(李白)</a></li>
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=16">忆昔开元全盛日</a></li>
</ul>

注意这里用了UL来实现滑动块,你可以换成DIV.

点击滑动块显示或隐藏菜单的JavaScript代码

<SCRIPT LANGUAGE="JavaScript">
<!--
function showHideUL(ulId){
  
// 取得无序列表
  var ul=document.getElementById(ulId);
  
  
// 原隐藏即显示,原显示即隐藏
  if(ul.style.display=="block" || ul.style.display=="" ){
    ul.style.display
="none";
  }

  
else{
    ul.style.display
="block";
  }

}

//-->
</SCRIPT>

如何在点击菜单项翻页后保持展开状态

现在剩下的问题是点击菜单项翻页后保持展开状态,如果使用Ajax左边可以不变,但右边内容区的代码全要通过Ajax实现有些费力不讨好,这里还是采用JSP的实现方法.
具体做法就是在连接中将UL的id传出去,翻页再得到它与诸菜单项比较,如果id相等则展开,不相等则关闭.
示例代码如下:

用于翻页保持展开状态的JSP代码

<% 
  
String ulId=request.getParameter("ulId");
  
if(ulId==null){
    ulId
="poems";
  }
%>

<ul class="stickedUl" onclick="showHideUL('poems')">
  诗歌
</ul>
<% 
  
if( ulId.equals("poems")){
    out.print(
"<ul class='slidedUl' id='poems' style='display:block'>");
  }
  
else{
    out.print(
"<ul class='slidedUl' id='poems' style='display:none'>");
  }
%>
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=1">春歌</a></li>
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=3">侠客行(李白)</a></li>
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=4">南陵别儿童入京(李白)</a></li>
  
<li><href="ShowPage?page=index&&ulId=poems&&aid=16">忆昔开元全盛日</a></li>
</ul>

CSS定义

body{
  margin
:0 auto;
  text-align
:center;
  min-width
:760px;
  background
:#7b869a;
}


#bodyDiv
{
  width
:924px;
  margin
:0 auto;
  text-align
:left;
  background
:#ffffff;
}


#header
{
  width
:924px;
  height
:100px;
}


#menubar
{
  float
:left;
  margin
:2px;
  width
:200px;
  height
:500px;
  border-top
:1px solid #ccd2d2;
  border-bottom
:0px solid #ccd2d2;
}


#content
{
  float
:right;
  margin
:2px;
  width
:712px;
  height
:500px;
}


#footer
{
  clear
:both;
  background
:#7b869a;
}


h1 
{
  font-size
: 18px; 
  margin
: 10px 0px 5px; 
  color
: #eeeeee; 
  text-align
: center;
}


h2 
{
  font-size
: 24px; 
  margin
: 10px 0px 5px; 
  color
: #000000; 
  text-align
: center;
}


ul.stickedUl
{
  color
: #21536a; 
  margin
:0;
  padding
:0;
  list-style-type
:none;
  text-align
: center;
  height
:20px;
  background
:#ebedec;
  border-left
:1px solid #ccd2d2;
  border-right
:1px solid #ccd2d2;
  border-top
:1px solid #ffffff;
  border-bottom
:1px solid #ccd2d2;
}


ul.slidedUl
{
  color
: #000000; 
  margin
:0;
  padding
:0;
  list-style-type
:none;
  padding-left
:20px;
  height
:20px;
  background
:#f5f7f7;
  border-left
:1px solid #ccd2d2;
  border-right
:1px solid #ccd2d2;
  border-top
:0px solid #ffffff;
  border-bottom
:0px solid #ccd2d2;
}


ul.slidedUl a
{
  padding
:2px;
  text-decoration
:none;
  color
:#8d4f10;
}


ul.slidedUl a:hover
{
  color
:#007799;
}



代码下载:
http://www.blogjava.net/Files/sitinspring/SlideMenu20080508141423.rar
posted on 2008-05-08 14:20 sitinspring 阅读(1131) 评论(2)  编辑  收藏 所属分类: HTML,CSS&JSWeb开发JavaScript

FeedBack:
# re: 使用CSS实现滑动菜单栏
2008-05-15 23:25 | 杰克
slidemenu.css里的一句,把firefox下的表现搞乱了,不如删去.


ul.slidedUl{
color
: #000000;

margin
:0;

padding
:0;

list-style-type
:none;

padding-left
:20px;

height
:20px;

background
:#f5f7f7;

border-left
:1px solid #ccd2d2;

border-right
:1px solid #ccd2d2;

border-top
:0px solid #ffffff;

border-bottom
:0px solid #ccd2d2;

}




  回复  更多评论
  
# re: 使用CSS实现滑动菜单栏
2008-05-16 13:25 | 如坐春风
@杰克

确实如此,谢谢提醒,非常感谢.  回复  更多评
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[CSS]利用UL、Li制作无表格实用菜单
【导航菜单特效】在横线中间的简洁CSS菜单
伸缩的菜单
基于jQuery实现左侧菜单栏可折叠功能
div不能嵌套li一例
前端必须掌握30个CSS3选择器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服