天天看點

JavaWeb學習之路(52)–CSS應用執行個體之下拉菜單

1. 前言

下拉菜單也是使用頻率很高的網頁控件,例如百度首頁上方的【設定】按鈕就是一個下拉菜單,當我們的滑鼠指向該按鈕時,會彈出下拉菜單。

本篇我們就通過CSS來一步一步編寫一個簡單的下拉菜單。

2. 開發過程

2.1 HTML元素組成

首先我們确定下HTML元素部分,有一個按鈕button,然後按鈕下面是菜單區域div,菜單區域包含多個連結a。然後下拉菜單作為一個整體,我們用一個div包裹起來。是以HTML代碼如下:

<body>

   <div class="dropdown">

       <button class="dropdown-button">下拉菜單</button>

       <div class="dropdown-menu">

           <a href="#">菜單1</a>

           <a href="#">菜單2</a>

           <a href="#">菜單3</a>

       </div>

   </div>

</body>

其中drowdown表示下拉菜單,dropdown-button表示按鈕,dropdown-menu表示菜單區域。此時由于尚未編寫任何CSS樣式代碼,效果如下:

2.2 設定按鈕樣式

我們一步一步來處理下拉菜單,首先編寫按鈕的樣式,代碼如下,注意看注釋:

    /* 按鈕樣式 */

 .dropdown-button {

           /* 顔色采用之前用過的百度藍 */

           background-color: #4569FF;

           /* 字型采用白色 */

           color: white;

           /* 不要邊框線 */

           border: none;

           /* 使用圓角 */

           border-radius: 8px;

           /* 将按鈕撐的大一些 */

           padding: 8px;

       }

此時效果如下:

另外我們希望當滑鼠懸停到下拉菜單區域時,按鈕顔色能變化,這樣有一個動态的效果,是以添加CSS代碼:

 /* 當滑鼠懸停于下拉菜單上方時,按鈕樣式 */

       .dropdown:hover .dropdown-button {

           background-color: blue;

此時當滑鼠移到下拉菜單上方時,顔色變化為更深的藍色。

2.3 設定菜單區域樣式

首先菜單區域預設應該是不顯示的,然後應設定一個寬度和邊框,讓下拉菜單區域能夠有一個好看的邊界:

   /* 下拉菜單 */

       .dropdown-menu {

           /* 預設不顯示 */

           display: none;

           /* 設定寬度 */

           width: 160px;

           /* 設定邊框 */

           border: 2px solid #E5F1FB;

當滑鼠懸停到下拉菜單上方時,菜單區域應顯示出來:

/* 滑鼠懸停時,顯示菜單區域 */

       .dropdown:hover .dropdown-menu {

           display: block;

是以懸停時,效果如下:

2.4 設定菜單中連結樣式

菜單中的超級連結應該是垂直排列,此時我們可以調整其盒模型為block,這樣就獨占一塊了。另外連結字型設為黑色,并通過padding增大間距。

 /* 連結樣式 */

       .dropdown-menu a {

           /* 換行 */

           /* 黑色字型 */

           color: black;

           /* 增大間距 */

           padding: 8px 12px;

           /* 去掉下劃線 */

           text-decoration: none;

然後我們再給滑鼠懸停的連結增加一個選中效果:

  /* 連結懸停樣式 */

       .dropdown-menu a:hover {

           /* 顔色值為按鈕預設顔色,有呼應效果 */

           background-color: #4569FF

懸停時,效果如下:

2.5 設定下拉菜單樣式

還有一個非常重要的點,可能不容易發現,就是目前下拉菜單整體是一個div,它會占用一個塊,也就是說整行的空間都被其占用。表現為滑鼠移到下拉菜單右側時,也會引發菜單區域展開。

但是我們實際希望下拉菜單,隻占用看到的那些區域就OK,此時很簡單,設定盒模型為inline-block即可,行内-塊級元素,即占據空間,又不會引起換行。

 /* 整個下拉菜單 */

       .dropdown {

           display: inline-block;

此時滑鼠隻有在下拉菜單上方,才會觸發菜單區域展開。

3. 小結

下拉菜單已經做出來了,其實還不夠完善,要做一個完美的網頁控件,可能需要大量的工作,尚需努力!