亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

網頁菜單詳解

2024-07-11 09:01:17
字體:
來源:轉載
供稿:網友

 首先看這下面的例子(鼠標移上去):

  Link 1

  Link 2

  Link 3

  Link N

  菜單實例

  類似這樣的仿Windows下拉菜單,在網上是比較常見的,最初出現在微軟網站上,之后被大量效仿。 事實上制作這樣一個模擬菜單也并不是一件很困難的事,比如上面的例子代碼如下:

  -------------------------------------------

  <!-- 樣式部分 -->

  <style type=text/css>

  td,div { font: normal 12px 宋體; }

  a  { color: #F8F8F8; text-decoration: none; }

  a:hover  { color: #F8F8F8; text-decoration: underline; }

  </style>

  <!-- 實現部分 -->

  <div

  

  onmouseout="myMenu.style.display='none'">

  <div >

  <div id=myMenu >

  &nbsp;Link 1<br>

  &nbsp;Link 2<br>

  &nbsp;Link 3<br>

  &nbsp;<br>

  &nbsp;Link N<br>

  </div>

  </div>

  菜單實例

  </div>

  -----------------------------------  那么下面我們就由淺入深的對這種模擬菜單進行分析講解。

  在講解之前,有一點需要說明的是:筆者在后面講解的代碼都基于當前的主流瀏覽器Microsoft Internet Explorer(即我們通常所說的IE)下的。筆者進行調試的瀏覽器是IE 5.01。另外,這樣一個菜單體現的是HTML/CSS/javascript的綜合應用,這里并不對一些細節進行詳細的講解,所以你至少應該有一點這方面的基礎。

  基本原理

  其實,這個菜單實現的原理簡單的說就是:設置頁面元素的CSS屬性,對其進行定位并設置其是否可見,然后通過激發一定的事件,用javascript來動態的改變這些屬性。

  看下面幾個CSS屬性:

  position:定位類型,取值static/absolute/relative,其代表的含義簡單的說即無定位/絕對定位/相對定位;

  left:距離左側的位置(具體的參照物與position的設置有關),單位為px或%;

  top:距離頂部的位置(具體的參照物與position的設置有關),單位為px或%。

  display:頁面元素的顯示狀態,如取值block表示做為塊狀元素顯示,none則為不顯示,還有其他一些取值(如inline等)這里就不做詳解。

  比如上例中的“div id=myMenu myMenu.style.display='block'"”就是一個很普通的用法,其中myMenu即我們所看到的“菜單”的ID,它原來的display為none,即不顯示,當鼠標移上去時,變為block,即塊狀顯示。

  另外要提的是:前面只說了如何實現定位、如何動態控制,那么定位的、控制的是什么元素呢?原則上來講,大部分塊狀元素(如div、table)都可以,而在IE中,div標記(注意,在一些非IE瀏覽器中,并不支持div標記)因其使用的靈活性和方便性而做為我們的首選。上例使用的就是div標記。

  好啦,基本的過程,上面大致已經說完了,在下一章,我們將看到使用上面提到的技術來實現一個簡單的菜單。

  模擬網頁下拉菜單中有幾個比較關鍵的CSS屬性:position、left、top、display,同時,他們也是style對象的屬性,今天我們就用這幾個基本屬性來實現一個簡單的網頁菜單。

  首先請大家看筆者已經做好的一個實例,然后我們對這個例子進行詳細代碼講解。

  為大家閱讀方便,這里采用在代碼中加注釋的方式,紅色部分為注釋。

  代碼如下:

  ------------------------------------------------------

  <html>

  <head>

  <title>菜單實例</title>

  <style type=text/css>

  td,div  { font: normal 12px 宋體; }

  </style>

  </head>

  <body >

  <table cellpadding=0 cellspacing=0 width=90% height=20 bgcolor=#CCCCCC>

  <tr>

  <td width=10> </td>

  <td width=80 align=center

  onmouseout="menuHide(menu01)">菜單實例</td>

  <!--

  上兩行為菜單中顯示的文字,注意這里面的事件觸發:

   鼠標經過時顯示菜單;

  onmouseout="menuHide(menu01)" 鼠標移走時隱藏菜單。

  參數menu01即要顯示的菜單的id,將在接下來的代碼中看到。

  menuShow與menuHide分別為顯示、隱藏菜單方法,將在后面定義。

  -->

  <td> </td>

  </tr>

  </table>

  <div id=menu01

   onmouseout="menuHide(this)">

  <!--

  以上三行,定義了菜單的一些屬性,注意“id=menu01”,前面提到過。

  position、top、left、display四個CSS屬性即上一章講過的;

  width、height、background-color分別為寬度、高度、背景色。

  這里再一次出現 onmouseout="menuHide(this)",

  就是說當鼠標從菜單按鈕上移開,如果是移到了菜單上,菜單仍然顯示。

  注意這里參數是this而不是menu01,this即對象本身,在這里就是指menu01,所以結果相同。

  在這里筆者有意使用this,只是想告訴大家一個技巧,這在很多時候非常方便。

  -->

  <br>   菜單內容

  </div>

  <script language=javascript>

  function menuShow(menu) //定義顯示菜單的方法,參數menu即菜單的id。

  {

  menu.style.display='block';

  //注意這里如何用javascript改變style對象的屬性來達到改變CSS屬性的目的。

  }

  function menuHide(menu) //定義隱藏菜單的方法,參數menu即菜單的id。

  {

  menu.style.display='none';

  //同上

  }

  </script>

  </body>

  </html>

  ------------------------------------------------------  這樣,一個簡單的菜單就實現了,只要你略有一些相關的基礎知識,反復體會一下我加的注釋,就應該可以理解了,是不是并不難?

  這個菜單現在看上去還有點簡陋,下次我們將對這個菜單進行進一步的修飾。

  這一章,我們就來討論如何美化它。

  美化主要表現在鼠標放到菜單上后(即鼠標懸停)的效果,這里首先介紹幾個經常用到的CSS屬性:

  background-color:背景色,其值為一個顏色值,如“#FF0000”、“red”。

  border:邊框樣式,一個形如“寬度 樣式 顏色”的字符串,如“1px solid red”,即1px的紅色實線邊框。

  cursor:鼠標指針樣式,取值為表示鼠標指針樣式的字符串,如“hand”、“help”,即小手、幫助狀態。

  以上只是簡單的介紹了幾個在此類菜單中非常常見的CSS屬性,這里也并未做很詳盡的解釋(畢竟這些并不是我們要講解的重點),欲了解更多可參閱相關資料。筆者在這里想說的是:掌握更多的CSS屬性會對你有所幫助。

  前面說了,美化主要表現在鼠標放到菜單上后的效果,那么如何用javascript來控制樣式的變化呢?或者你會想到前面講過的style對象,的確,用style可以達到目的,但是,很多時候,需要改變很多個CSS屬性,用style就顯得有些麻煩。我們再來介紹一個新的屬性:className。

  className屬性對應的就是CSS的class,也即所謂的偽類,比如在某個標記中設置class=myName,那么這時該元素的className屬性就是myName。

  來看下面這個例子:

  --------------------------------------------

  <style type="text/css">

  .style_normal { color: gray; }

  .style_over  { color: red; }

  </style>

  <span class=style_normal

  onmouseout="this.className='style_normal'">

  鼠標移上來,通過className屬性改變這段文字的class,使文字顏色變成紅色;

  移走,又恢復原來的顏色。</span>

  ----------------------------------------------

  效果如下(把鼠標放到文字上):

  我們看到,在處理相對復雜的樣式變化的情況下,用className就方便得多了,至于樣式如何變化,就變成如何定義class的問題了。

  講到這里,我想有一定CSS基礎的朋友應該已經清楚如何來修飾這個菜單了,即便你對CSS了解的還不多,前面已經介紹了幾個較常用的屬性。所以,這里就不再多講了,最后提供兩個筆者做好的例子,希望你能從中受到啟發(查看源文件即可看到相應的代碼,相應位置加了注釋,在此就不另行給出)。

  1. 一個簡單的背景變化

  2. 仿office XP菜單效果

  上面兩例都用了灰色,你當然可以改成你自己喜歡的顏色。這兩例也是比較常見的效果,這里提供給大家也算是拋磚引玉。相信開動你的腦筋、合理的運用掌握的技術,會做出更漂亮的效果!

  通過前三篇文章的講解,現在我們已經可以實現一個基本的菜單了。這一章,我們來討論一下定位的問題。

  在前幾章講的例子中,定位都是相對于整個網頁的左上角。在有一些時候,我們可能需要它相對于網頁中某個元素定位,這樣做在某些時候是非常有必要的,比如不會出現那種因窗口大小的改變而致使菜單與網頁中的一些元素的相對位置發生變化。在第一章的最初,筆者所給的例子中就是這樣做的。

  在那里我們很方便把就把這個菜單插入到了網頁中,而菜單不會相對菜單按鈕的位置發生變化。下面我們就看看如何來實現。

  在第一章,我們講過position,當它取值absolute的時候,即絕對定位。既然是定位,就要有參照物。一般來講,這個定位的參照物是body(即整個網頁)的左上角,但如果其父級元素中有設置了position:absolute的元素,那么它的參照物就是該元素。知道了這樣一個特性,我們就可以很容易的來實現了。

  另外,有一點在這里必須要著重說明一下,前面同時也講過,當position的值為relative時,就是相對定位,為什么不用它來實現呢?我們必須要正確理解這里所謂的相對定位:它是指相對于原來在HTML中的位置所發生的偏移,而它仍占據原來在HTML中所占據的位置。而我們現在的菜單需要“懸浮”在網頁元素之上,而這只有當position設為absolute時才可以做到。

  通過上面的講述,我們應該可以大致的了解其實現的原理了。下面就看看剛才在上面看到的那個菜單的代碼(注意里面的注釋會幫你加深理解)。

  -------------------------------------------------------------------------------

  <style type=text/css>

  td,div  { font: normal 12px 宋體; }

  a  { color: #F8F8F8; text-decoration: none; }

  a:hover  { color: #F8F8F8; text-decoration: underline; }

  </style>

  <div

  

  onmouseout="myMenu.style.display='none'">

  <!--上面的DIV就是我們看到的按鈕部分,它并未涉及任何定位的部分,

  不要與下面兩個混淆。-->

  <div >

  <!--注意上面的DIV,設置了position:absolute,但是并沒有設置left/top,

  所以這時它仍與一個普通的HTML元素一樣,出現在它應該出現的位置。-->

  <div id=myMenu >

  <!--它的定位是相對于前一個DIV而不是Body,

  因為前一個DIV設置了position:absolute-->

  Link 1<br>

  Link 2<br>

  Link 3<br>

  <br>

  Link N<br>

  </div>

  </div>

  菜單實例

  </div>-------------------------------------------

  請仔細理解上面的代碼,相信大家對用CSS進行絕對定位會有一個更深層次的認識!

  這里說一句題外話:這種定位可以用Dreamweaver來實現(這對于對JS不是很熟的朋友來講的確很方便),而事實上這樣做生成的代碼的原理與上面講的相同的。把上面講的原理弄清楚了,使用起來會更靈活。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美高清视频免费观看| 中文字幕精品—区二区| 日韩有码在线视频| 日韩经典一区二区三区| 国产成人aa精品一区在线播放| 色婷婷**av毛片一区| 国产免费一区二区三区在线能观看| 热久久99这里有精品| 搡老女人一区二区三区视频tv| 亚洲黄色av女优在线观看| 欧美性在线观看| 国产精品va在线播放我和闺蜜| 欧美性高跟鞋xxxxhd| 亚洲欧美三级在线| 欧美亚洲视频一区二区| 欧美三级欧美成人高清www| 日韩中文字幕在线精品| 欧美成年人视频| 中文字幕自拍vr一区二区三区| 国产成人亚洲精品| 国产亚洲一区二区精品| 亚洲欧洲中文天堂| 在线午夜精品自拍| 国产91色在线播放| 久久99久久99精品中文字幕| 欧美精品福利视频| 日本高清+成人网在线观看| 国产精品日韩在线观看| 亚洲精品美女在线| 亚洲一区二区久久久久久| 中文字幕在线精品| 欧美日产国产成人免费图片| 亚洲视频一区二区三区| 午夜精品福利视频| 日韩精品在线视频| 久久免费视频网| 欧美性xxxx极品高清hd直播| 2020国产精品视频| 91亚洲午夜在线| 亚洲福利在线播放| 国产视频丨精品|在线观看| 91精品免费视频| 性欧美在线看片a免费观看| 亚洲女成人图区| 欧美精品做受xxx性少妇| 国产成人精品在线播放| 国产精品黄色av| 国产性猛交xxxx免费看久久| 日韩电影在线观看中文字幕| 亚洲自拍偷拍福利| 亚洲国产精品字幕| 日韩在线观看视频免费| 亚洲国产精品一区二区三区| 一本大道香蕉久在线播放29| 97超碰国产精品女人人人爽| 黄色成人在线播放| 黑人狂躁日本妞一区二区三区| 久久精品国产清自在天天线| 一区二区三区高清国产| 欧美精品免费看| 丝袜一区二区三区| 国产成人精品视频| 成人国产精品色哟哟| 国产精品一区二区av影院萌芽| 伊人伊成久久人综合网小说| 久久久久久有精品国产| 狠狠躁18三区二区一区| 精品国产1区2区| 亚洲深夜福利网站| 78m国产成人精品视频| 国产精品免费一区豆花| 中文字幕亚洲无线码在线一区| 亚洲视频在线免费观看| 国产丝袜一区二区三区免费视频| 国内精品久久久久久| 国产精品海角社区在线观看| 欧美另类精品xxxx孕妇| 色午夜这里只有精品| 亚洲成人教育av| 另类专区欧美制服同性| 日韩视频在线一区| 欧美激情久久久久| 精品亚洲一区二区三区四区五区| 国产精品永久免费在线| 影音先锋欧美精品| 美女久久久久久久久久久| 久久99精品国产99久久6尤物| 国产精品青草久久久久福利99| 国产做受高潮69| 亚洲国产精品推荐| 久久久亚洲国产天美传媒修理工| 97人洗澡人人免费公开视频碰碰碰| 欧美日韩精品在线视频| 中文字幕九色91在线| 中文字幕欧美亚洲| 日韩av最新在线| 91成人免费观看网站| 亚洲高清久久久久久| 久久精品国产久精国产一老狼| 日韩欧美在线视频| 成人免费高清完整版在线观看| 中文字幕亚洲国产| 国产剧情久久久久久| 在线观看亚洲视频| 欧美激情免费观看| 国产欧美日韩高清| 亚洲综合中文字幕在线观看| 午夜精品一区二区三区在线视频| 亚洲精品日韩欧美| 理论片在线不卡免费观看| 亚洲一区二区三区在线视频| 久久夜精品va视频免费观看| 欧美性黄网官网| 国产国语videosex另类| 欧美成在线观看| 欧美日韩国产成人在线观看| 久久久久久久久国产| 日韩精品免费一线在线观看| 日韩视频中文字幕| 日韩福利伦理影院免费| 亚洲第一精品电影| 国产精品久久久久久久av大片| 亚洲精品福利在线| 日韩电影免费在线观看中文字幕| 欧美激情亚洲综合一区| 精品国产一区二区三区久久狼黑人| 亚洲综合一区二区不卡| 亚洲电影成人av99爱色| 欧美电影免费观看| 精品一区二区亚洲| 久久精品国亚洲| 91亚洲国产成人久久精品网站| 欧美丰满少妇xxxxx| 色偷偷偷综合中文字幕;dd| 亚洲自拍欧美色图| 久久国产精品首页| 97人人模人人爽人人喊中文字| 亚洲一区亚洲二区亚洲三区| 欧美国产第二页| 欧美精品日韩三级| 色婷婷av一区二区三区久久| 日韩在线欧美在线| 九九热这里只有在线精品视| 欧美国产一区二区三区| 日韩一区二区在线视频| 亚洲视频999| 一本色道久久综合亚洲精品小说| 欧洲日韩成人av| 日韩女优人人人人射在线视频| 亚洲一区二区三区在线免费观看| 国产精品扒开腿做爽爽爽的视频| 日韩福利伦理影院免费| 亚洲亚裔videos黑人hd| 欧洲成人免费aa| 国产精品爽爽ⅴa在线观看| 午夜免费在线观看精品视频| 亚洲最大av网站| 国产精品∨欧美精品v日韩精品| 国产精品欧美久久久| 国产精品久久久久久婷婷天堂| 另类少妇人与禽zozz0性伦| 日韩电影网在线| 欧洲亚洲女同hd| 国产精品成人久久久久|