這種選單效果是透過腳本和樣式控制的,對於新手來說是非常好的學習內容:
這種昨晚一邊看舞動奇蹟,一邊整理這個菜單的小代碼,一起來看看吧,會了可以溫故知新,不會的可以藉鑑一下思想,其實就是想完善一下這種前端的思想,讓它不要再陌生:
這是一個asp.net的master頁裡面的選單部分
Html部分:
複製代碼代碼如下:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link type="text/css" rel="Stylesheet" href="Styles/master.css" />
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="Scripts/nav.js" type="text/javascript"></script>
</head>
<body>
<div id="nav">
<input type="hidden" value="<%=Request.QueryString["menutemp"] %>" id="masterid" />
<a href="Default.aspx?menutemp=0">首頁</a>
<a href="surveylist.aspx?menutemp=1">醫院概況</a>
<a href="Culturelist.aspx?menutemp=2">醫院文化</a>
<a href="Tumor dynamic list.aspx?menutemp=3">醫院動態</a>
<a href="Services list .aspx?menutemp=4">醫院服務</a>
<a href="Medical guidelines.aspx?menutemp=5">就診指南</a>
<a href="Introduce department.aspx?menutemp=6">科室介紹</a>
</div>
</body>
</html>
看看css部分把,這是來區分選取項目和其他項目的:
#master .head .nav a.check{ background:url(../images/navbg.png) 1px 1px no-repeat; color:#fff;}
以下就是賦予html生命的js部分,是他讓網頁動起來:
複製代碼代碼如下:
$(document).ready(function () {//表示要在網頁載入之後執行
var current = $("#masterid").val();//透過jquery方式取得id=masterid的頁面元素的值,其實就是為了取得選取的選單
var alist = new Array();//定義數組
if (current == "") {//要是沒有取得到選取的選單,我們就忽略這個
current = -1;
}
$("#nav>a").each(function (i, items) {//這個部分就是在你點擊了選單一項後,還麼有刷新頁面時候的樣式變化,哈哈,each是一個遍歷函數,會遍歷#nav>a的集合。
alist[i] = $(items);//i是從0開始到遍歷集合結束為止,自增1的
$(alist[i]).click(function () {//對alist[i]進行註冊點擊事件,點選就會執行對應的方法,
if (i != current) {//如果選擇了不同的選單項,就會為選擇的選單加上應有的樣式,而之前的就會去除樣式
$(this).addClass("check");
$(alist[current]).removeClass("check");
current = i;//返回新選擇的選單項目id
}
});
});
$("#nav>a").each(function (i, items) {//這是在頁面跳到新頁面後對頁面樣式的處理,讓選單的樣式正確呼叫。
alist[i] = $(items);
if (i != current) {
$(alist[i]).removeClass("check");
}
});
$(alist[current]).addClass("check");
});
好了,你可以趕快試試看。