使用CSS實現滑動菜單欄
滑動菜單示例
滑動菜單多用於菜單項目較多且菜單可歸納到少數類別的場合,點擊類別滑動條會上下滑動以隱藏或顯示其下的子菜單.其典型應用便是Visio中滑動菜單樣式(上圖).本人在Web中實現了類似的控制項(下圖),拿出來希望和大家一起交流一下.
滑動效果的實現
本文中使用無序列表作為滑動條下的子菜單的實現,出現滑動效果實際是控制子菜單的隱藏和顯示.控制子菜單的隱藏和顯示改變UL的display屬性即可,當其為block時顯示菜單,其為none時不顯示,我們可以用JS來實現這一效果.滑動塊和菜單的頁面代碼示例如下:
實現效果之一
滑動塊和菜單的頁面代碼示例
<ulclass="stickedUl"onclick="showHideUL("poems")">
詩歌
</ul>
<ulclass="slidedUl"id="poems"style="display:block">");
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=1">春歌</a></li>
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=3">俠客行(李白)</a></li>
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=4">南陵別兒童入京(李白)</a></li>
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=16">憶昔開元全盛日</a></li>
</ul>
注意這裡用了UL來實現滑動塊,你可以換成DIV.
點擊滑動塊顯示或隱藏菜單的JavaScript代碼
<SCRIPTLANGUAGE="JavaScript">
<!--
functionshowHideUL(ulId)
{
//取得無序列表
varul=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代碼
<%
StringulId=request.getParameter("ulId");
if(ulId==null){
ulId="poems";
}
%>
<ulclass="stickedUl"onclick="showHideUL("poems")">
詩歌
</ul>
<%
if(ulId.equals("poems")){
out.print("<ulclass="slidedUl"id="poems"style="display:block">");
}
else{
out.print("<ulclass="slidedUl"id="poems"style="display:none">");
}
%>
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=1">春歌</a></li>
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=3">俠客行(李白)</a></li>
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=4">南陵別兒童入京(李白)</a></li>
<li><ahref="ShowPage?page=index&&ulId=poems&&aid=16">憶昔開元全盛日</a></li>
</ul>
CSS定義
body{
}{
margin:0auto;
text-align:center;
min-width:760px;
background:#7b869a;
}
#bodyDiv{
}{
width:924px;
margin:0auto;
text-align:left;
background:#ffffff;
}
#header{
}{
width:924px;
height:100px;
}
#menubar{
}{
float:left;
margin:2px;
width:200px;
height:500px;
border-top:1pxsolid#ccd2d2;
border-bottom:0pxsolid#ccd2d2;
}
#content{
}{
float:right;
margin:2px;
width:712px;
height:500px;
}
#footer{
}{
clear:both;
background:#7b869a;
}
h1{
}{
font-size:18px;
margin:10px0px5px;
color:#eeeeee;
text-align:center;
}
h2{
}{
font-size:24px;
margin:10px0px5px;
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:1pxsolid#ccd2d2;
border-right:1pxsolid#ccd2d2;
border-top:1pxsolid#ffffff;
border-bottom:1pxsolid#ccd2d2;
}
ul.slidedUl{
}{
color:#000000;
margin:0;
padding:0;
list-style-type:none;
padding-left:20px;
height:20px;
background:#f5f7f7;
border-left:1pxsolid#ccd2d2;
border-right:1pxsolid#ccd2d2;
border-top:0pxsolid#ffffff;
border-bottom:0pxsolid#ccd2d2;
}
ul.slidedUla{
}{
padding:2px;
text-decoration:none;
color:#8d4f10;
}
ul.slidedUla:hover{
}{
color:#007799;
}
代碼下載:http://www.blogjava.net/Files/sitinspring/SlideMenu20080508141423.rarposted on 2008-05-08 14:20 sitinspring 閱讀(1131) 評論(2) 編輯 收藏 所屬分類: HTML,CSS&JS 、Web開發 、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 | 如坐春風@傑克 確實如此,謝謝提醒,非常感謝.回復更多評
推薦閱讀:
※8~9月齡寶寶每日輔食菜單 & 餵養要點
※小美的菜單(第144頁)
※6~7月齡寶寶每日輔食菜單 & 餵養要點
※婚宴菜單的注意事項
※教你看懂日料菜單