<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA & XML & JAVASCRIPT & AJAX & CSS

    Web 2.0 技術儲備............

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      77 隨筆 :: 17 文章 :: 116 評論 :: 0 Trackbacks

    http://www.sharkui.com/articles/article.php?id=22

    菜單(Menu)是最基本最常見的網頁UI元素之一,它的主要功能包括:

    1. 引導用戶發現網站的內容;
    2. 協助用戶執行某一特定的操作。

      一個完整的菜單是一組菜單項(Menu Item)的集合,所有的菜單項在邏輯上應該是并列、平級的關系,它們指向相互之間沒有隸屬關系的內容或功能。

      菜單項可以是鏈接,也可以是另一組菜單項的集合,即二級菜單(Sub-Menu)。

    菜單項的文案設計

    1. 明了:把意思表達清楚是一個菜單項文案的最基本要求。
      根據菜單的兩種基本功能,“指向內容”的菜單項最好是一個概括內容的名詞或名詞性短語(如“詩歌”、“古典小說”),“執行操作”的菜單項最好是一個動詞或動賓短語(如“訂閱”、“訂閱新聞”)。
    2. 直白:所有的網站是給用戶看的,就按用戶們習慣的大白話來和他們交流吧。
      舉個例子:某門戶網站提供了針對寬帶用戶的在線視頻服務,指向這一服務的菜單項上寫著“寬頻”。中國的大多數互聯網使用者都是比較初級而且不懂技術的,所以用“視頻”或“在線視頻”對他們來說會更加明白清楚(要不是“小電影”有某些其他意思,不然這個詞可能更合適一些)。
    3. 簡短:如果對“簡短”原則需要更多解釋的話,那就是不要為了“簡短”而忽視了“明了”與“直白”。

    基本的XHTML結構

      在XHTML的一大堆標簽中,有一個被99.99%的Designer和99.98%的Developer忽視的標簽:menu。它的用法與ul一樣,內部可以包含一系列的li元素來構成菜單項,所以用它來構建菜單是再合適不過的了。如下:

    <menu>
    	<li><a href="/movie/">電影</a></li>
    	<li><a href="/music/">音樂</a></li>
    	<li><a href="/software/">軟件</a></li>
    </menu>

      查看效果(例1)

      這里需要特別說明一下,menu標簽在XHTML Strict中已經不存在了,如果基于“向前兼容”的考慮,建議使用ul來代替menu。如果你的DocType是XHTML Transitional,那么使用menu是完全沒問題的(包括通過校驗)。具體怎么使用請根據你的實際情況選擇,在這篇文章中我將使用menu標簽。

    菜單項提示

      設計菜單項文案時,“簡短”與“明了”是一對矛盾,在無法用幾個字說得很明白的情況下,就需要“菜單項提示(Menu Item Tooltip)”了。當鼠標懸停在某個菜單項上的時候,會彈出相應的提示,對此菜單項的內容和功能作出更進一步的說明。

      XHTML中的title屬性就是用來提供這項改善可用性的功能:

    <a href="/movie/" title="最新院線電影下載">電影</a>

      查看效果(例2)

    最簡單的菜單

      到目前為止我們寫好了菜單的XHTML代碼并考慮了可訪問性和易用性方面的問題,但這當然還稱不上一個可以拿得出手的菜單。不過也有人把這樣的菜單拿出來用的,比如apache.org這個bt的技術組織@_@,下面咱就幫他們改個稍微好看點的菜單。

      先把menu的縮進效果和li前面的點去掉,并定義一個合適的寬度:

    menu{
    	margin:0;
    	padding:0;
    	list-style:none;
    width:120px; }

      查看效果(例3)

      再為菜單項設置盒模型風格,注意IE和Firefox/Opera之間在盒模型上的差異:

    menu li{
    	/*高度20px*/
    	height:20px;
    	/*定義每個菜單項之間的間隔,并用!important*/
    	/*解決IE與Gecko瀏覽器之間的盒模型差異*/
    	margin-bottom:4px !important;	
    	margin-bottom:2px;
    }

      接下來是最關鍵的一步,請仔細看注釋。

    menu a{
    	/*定義a為塊級元素,方便用盒模型屬性定義外觀*/
    	display:block;
    	/*定義尺寸*/
    	width:100%;
    	height:20px;
    	/*盒模型風格*/
    	background-color:F6F6F6;
    	border:1px solid #DDD;
    	/*文字樣式*/
    	font:11px arial;
    	text-decoration:none;
    	/*文字垂直居中*/
    	line-height:20px;
    	/*文字水平居中*/
    	text-align:center;
    }

      查看效果(例4)

      接下來很輕松了,簡單設置一下鏈接在四種狀態下的樣式,使菜單能夠與鼠標覆蓋事件交互:

    
    menu a:link,menu a:visited{
    	color:#333;
    }
    menu a:hover,menu a:active{
    	color:#F50;
    }
    

      查看效果(例5)

      也可以把鼠標效果做得更明顯一些,比如變化一下背景色:

    
    menu a:hover,menu a:active{
    	background-color:#FFEFE6;
    	border:1px solid #F60;
    }
    

      查看效果(例6)

    橫向的菜單

      制作橫向菜單的方法大致有兩種:浮動與絕對定位。

      浮動法的思想很簡單:讓每一個菜單項都向左浮動,最終排成一橫排。我們只需對上面的CSS做一些小小的改動就可以了:

    menu{
    	/*去掉menu的寬度,如果你的頁面有寬度限制,那么也可以設在這里*/
    	margin:0;
    	padding:0;
    	list-style:none;
    }
    menu li{
    	/*指定li的長與寬*/
    	height:20px;
    	width:120px;
    	/*讓它向左浮動*/
    	float:left;
    	/*設置菜單項之間的間隔*/
    	margin-right:4px !important;
    	margin-right:2px;
    	/*解決IE與Gecko瀏覽器之間的盒模型差異*/
    	margin-bottom:4px !important;	
    	margin-bottom:2px;
    }

      查看效果(例7)

      這種方法不僅可以方便地創建橫向菜單,它的思想同樣用于在“流動布局”中羅列一些相似的內容,是一種應用很廣泛的布局方法。

      再講“絕對定位”的方法。很多人(包括一些Web標準實踐經驗非常豐富的人)對絕對定位有一種莫名其妙的反感,I don't know why。事實上它是一種極其重要的CSS布局方法,只要在使用時掌握那么一點點小竅門,你不會碰到讓人沮喪的布局錯亂或者其他什么古怪的結果。當然我也不是說絕對定位是萬能的,“合適的才是最好的”,何時使用取決于具體的情況。

      回到菜單的制作上,如果你的菜單項長短不一,或者高低起伏,總之是不那么規則的時候,就可以使用絕對定位來實現。首先需要對上面的XHTML作一些小改動:給每個菜單項一個id

    <menu>
      <li id="miMovie"><a href="/movie/" title="DVDRip">電影</a></li>
      <li id="miMusic"><a href="/music/" title="mp3">音樂</a></li>
      <li id="miSoftware"><a href="/dl/" title="共享">軟件</a></li>
    </menu>

      三個菜單項的id有一個共同的前綴——mi(即Menu Item的縮寫),用于和其他元素的ID命名區分。這種命名方式純粹是我的個人喜好,來自于以前用delphi和VB開發軟件時的習慣。另外一些縮寫包括mnu(Menu,菜單)、btn(Button,按鈕)、pnl(Panel,面板)、lst(List,列表)、tab(Tab Menu,選項卡)等等。這樣做的好處是可以有效防止id命名重復,同時在CSS中也可以只看命名就知道元素的UI類型。

      接下來就是CSS的工作了。先給menu定好長寬、去除縮進等等:

    menu{
    	width:360px;
    	height:20px;
    	margin:0;
    	padding:0;
    }

       接下來的一步很重要,給menu指定為相對定位:

    menu{
    	position:relatvie;
    	width:360px;
    	height:20px;
    	margin:0;
    	padding:0;
    }

      如果跳過了這一步,后面你會發現菜單項的“絕對定位”并不是以menu為參照物,而是以瀏覽器窗口的左上角為坐標原點,當然這不是我們想要的效果。

      再設置菜單項共同的屬性和相同的縱坐標:

    menu li{
    	position:absolute;
    	top:0;
    	list-style-type:none;
    	width:120px;
    	height:20px;
    	line-height:20px;
    	text-align:center;
    }

      最后用id選擇單個的菜單項指定其“個性”的橫坐標屬性:

    #miMovie{
    	left:0;
    }
    #miMusic{
    	left:120px;
    }
    #miSoftware{
    	left:240px;
    }

      查看效果(例8)

      絕對定位對a標簽的定義與浮動法基本一致,請查看例8的源代碼。

      以上講到的技術與技巧足以應付一般的菜單制作了,apache.org也應該會對我們修改后的菜單感到滿意^_^。在下一篇文章中我會更詳細地介紹基于Web標準制作菜單的高級應用和技巧。

      繼續閱讀《基于Web標準的UI組件 — 菜單(2)

    posted on 2006-03-16 23:05 Web 2.0 技術資源 閱讀(593) 評論(0)  編輯  收藏 所屬分類: CSS
    主站蜘蛛池模板: 在线观看免费人成视频色| 麻豆最新国产剧情AV原创免费| 蜜臀91精品国产免费观看| 亚洲中文无码卡通动漫野外| 毛片网站免费在线观看| 国产亚洲精品影视在线| 大陆一级毛片免费视频观看i| 一本色道久久综合亚洲精品蜜桃冫| 18禁成年无码免费网站无遮挡| 亚洲中文字幕AV在天堂| 日韩黄色免费观看| 免费无码专区毛片高潮喷水| 亚洲无线观看国产精品| 免费在线观影网站| 亚洲精品在线免费观看视频| 97人伦色伦成人免费视频| 亚洲成a人无码亚洲成www牛牛 | 久久免费的精品国产V∧| 亚洲精品国产成人| 巨胸喷奶水视频www网免费| 免费播放美女一级毛片| 国产美女亚洲精品久久久综合| 久久美女网站免费| 91嫩草亚洲精品| 国产成人精品123区免费视频| 毛片基地看看成人免费| 精品亚洲麻豆1区2区3区| 嫩草影院在线免费观看| 午夜成人无码福利免费视频| 亚洲AV无码一区二区二三区入口| 国产高清不卡免费在线| 国产精品亚洲一区二区三区| 亚洲AV无码久久精品蜜桃| 一区二区无码免费视频网站| 免费人成网站永久| 78成人精品电影在线播放日韩精品电影一区亚洲 | 今天免费中文字幕视频| 亚洲videos| 亚洲午夜久久久影院伊人| 99在线视频免费观看视频| fc2成年免费共享视频网站|