首頁  >  文章  >  web前端  >  寫出純 CSS 彈出式選單的原理及實作 By shawl.qiu_經驗交流

寫出純 CSS 彈出式選單的原理及實作 By shawl.qiu_經驗交流

WBOY
WBOY原創
2016-05-16 12:08:465154瀏覽

撰寫純 CSS 彈出式功能表的原則及實作 By shawl.qiu


#摘要: 
本文介紹了使用 CSS 編寫適用於 Opera, Firefox, IE 的多重彈出式功能表
## #說明:
編寫 CSS 彈出選單的重點不外乎當滑鼠移到目標上時, 顯示隱藏的標籤. 
要隱藏的標籤使用 display:none; 屬性進行隱藏. 
觸發顯示隱藏標籤主要使用 :hover 屬性, 並用 display:block; 顯示隱藏的標籤.

但由於瀏覽器對 CSS 的支援並非一致.
#對於 Opera 或 Firefox, 我們可以寫出純 CSS , 他們支援任何標籤的 :hover 屬性.
而對於 IE 瀏覽器, :hover 只對 a 標籤起作用, 但我們可以使用腳本的 onmouseover, onmouseout 模擬出其他標籤的屬性.
編寫適用於 IE 的 CSS 彈出式功能表必須使用到少許的腳本.

#目錄:
1. 編寫直排右側彈出的 CSS 選單. 
1.1 真正的基於 Opera, CSSrefox  
1.1 真正的基於 Opera, Firefox  
1.1 真正的基於 Opera, Firefox  CSS彈出式選單
1.2 相容 IE, Opera, Firefox 的 CSS 彈出式功能表(腳本實作)

2. 編寫橫排底部彈出的 CSS 功能表. 
2.1 真正的基於彈出式Opera、選單
2.2 相容 IE, Opera, Firefox 的 CSS 彈出式選單(腳本實作)

3. 結論

#4. 預覽

shawl.qiu
4. 預覽

shawl.qiu##2006
#4. 預覽

shawl.qiu##2006
    #4. 預覽shawl.qiu##2006
  1. #4. 預覽
  2. shawl.qiu
  3. #4. 預覽
  4. shawl.qiu##2006
  5. ##4. 預覽
  6. shawl.qiu
  7. ####### -10-01######http://blog.csdn.net/btbtd#########1. 寫直排右邊彈出的 CSS 選單. #######1.1 真正的基於 Opera, Firefox 純 CSS 彈出式選單### ######linenum### ### ### ### ### ###Untitled Document ### ###/*    .pmVerticalRightOut{background-color:#fff!important; /* 定義主選單域背景色 */} 
  8.     .pmVerticalRightOut .level{  /* 定義一級類別屬性 */
  9.         width:120px; /* 寬度 */
  10.         height:17; /* 高度 */
  11.         position:relative; /* 顯示位置為相對位置 */
  12.         display:block; /* 以區塊模式顯示 */
  13.         background-color:#D8D8D8; /* 背景色 */
  14.         padding:0px 2px; /* 文字內補丁間隔 */
  15.         margin:0px 0px 1px 0px; /* 選單外補丁間隔 */
  16.     }
  17.     .pmVerticalRightOut .level:hover { /* 當滑鼠劃過一級選單時 */
  18.         background-color:#6633FF; /* 背景色 */
  19.         color:#FFFFFF; /* 文字顏色 */
  20.     }
  21.     .pmVerticalRightOut .level_{display:none; /* 預設隱藏二級類別 */}
  22.     
  23.     .pmVerticalRightOut .level:hover .level_ { /* 滑鼠劃過時觸發顯示二級類別 */
  24.         display:block; /* 以區塊顯示 */
  25.         left:124px; /* 相對於一級類別所顯示的位置 */
  26.         width:120px; /* 寬度 */
  27.         height:auto; /* 高度 */
  28.         top:0px; /* 相對於一級類別所在位置的頂端 */
  29.         background-color:#EFEFEF; /* 定義背景色 */
  30.         position:absolute; /* 位置為絕對位置 */
  31.     }
  32.     .pmVerticalRightOut .level:hover .level_ .level_title {
  33.         /* 定義二級類別標題樣式 */
  34.         font-weight:bold; /* 字體加粗 */
  35.         background-color:#A7ADFE; /* 背景色 */
  36.         color:white; /* 文字顏色 */
  37.     }
  38.     .pmVerticalRightOut .level:hover .level_ a:hover {
  39.         /* 定義二級類別連結顯示樣式 */
  40.         background-color:#F83658; /* 背景色 */
  41.         color:white; /* 文字顏色 */
  42.     }
  43.     .pmVerticalRightOut .level_ * { 
  44.         /* 定義所有二級類別一般屬性 */
  45.         display:block; /* 以區塊顯示 */
  46.         color:black; /* 文字顏色 */
  47.         padding:0px 2px; /* 內補丁間隔 */
  48.     }
  49. /*]]>*/
  50.     
  51.         level
  •         
  •             level_ title
  •             level_ 標題 1
  •             level_ 標題 2
  •             level_ 標題 3
  •             level_ 標題 4
  •             level_ 標題 5
  •         
  •     
  •     
  •         
    level 1
  •         
  •             level_ title
  •             level_ 標題 1
  •             level_ 標題 2
  •             level_ title 3
  • level_標題4
  •             level_ 標題 5
  •         
  •     
  •     
  •         
    level 2
  •         
  •             level_ title
  •             level_ 標題 1
  •             level_ 標題 2
  •             level_ 標題 3
  •             level_ 標題 4
  •             level_ 標題 5
  •         
  •     
  •     
  •         
    level 3
  •         
  •             level_ title
  •             level_ 標題 1
  •             level_ 標題 2
  • level_ title 3
  •             level_ 標題 4
  •             level_ 標題 5
  •         
  •     
  •     
  •         
    level 4
  •         
  •             level_ title
  •             level_ 標題 1
  •             level_ 標題 2
  •             level_ title 3
  •             level_ 標題 4
  •             level_ 標題 5
  •         
  •     

  • 1.2 相容 IE、Opera、Firefox 的 CSS 彈出式選單(腳本實作)
      linenum
    1. " http://www.w3.org/TR/html4/loose.dtd">
    2. Untitled Document
    3. //if (navigator.appName=="Microsoft Internet Explorer") {
    4.     function fPmVerticalRightOut() {
    5.         var getItem = document.getElementById("pmVerticalRightOut").getElementsByTagName("div");
    6.         for (var i=0; i            getItem[i].onmouseover=function() { 
    7.                 if(    this.className=="level"){
    8.                     this.className="levelIe";
    9.                 }
    10.             }
    11.             getItem[i].onmouseout=function() { 
    12.                 if(    this.className=="levelIe"){
    13.                     this.className="level";
    14.                 }
    15.             }//css彈出式選單腳本作者:shawl.qiu
    16.         }
    17.     }
    18.     window.onload=fPmVerticalRightOut;
    19. }
    20. //]]>
    21.     
    22.         level
    23.         
    24.             level_ title
    25.             level_ 標題 1
    26.             level_ 標題 2
    27.             level_ 標題 3
    28.             level_ 標題 4
    29.             level_ 標題 5
    30.         
    31.     
    32.     
    33.         
      level 1
    34.         
    35.             level_ title
    36.             level_ 標題 1
    37.             level_ 標題 2
    38.             level_ title 3
    39. level_標題4
    40.             level_ 標題 5
    41.         
    42.     
    43.     
    44.         
      level 2
    45.         
    46.             level_ title
    47.             level_ 標題 1
    48.             level_ 標題 2
    49.             level_ 標題 3
    50.             level_ 標題 4
    51.             level_ 標題 5
    52.         
    53.     
    54.     
    55.         
      level 3
    56.         
    57.             level_ title
    58.             level_ 標題 1
    59.             level_ 標題 2
    60. level_ title 3
    61.             level_ 標題 4
    62.             level_ 標題 5
    63.         
    64.     
    65.     
    66.         
      level 4
    67.         
    68.             level_ title
    69.             level_ 標題 1
    70.             level_ 標題 2
    71.             level_ title 3
    72.             level_ 標題 4
    73.             level_ 標題 5
    74.         
    75.     

    #2.編寫了橫底部彈出的 CSS 選單。

    2.1 真正的基於 Opera、Firefox 純 CSS 彈出式選單
      linenum
    1. http://www.w3.org/TR/html4/loose.dtd">
    2. Untitled Document
    3. /*    body{ margin:0px auto; width:768px; /* 定義頁以中顯示,*/}
    4.     *{text-decoration:none!important; /* 定義所有連結不顯示底線 */}
    5.     .pmHorizo​​ntalBottomOut{background-color:#fff!important; /* 定義主選單域背景色 */} 
    6.     .pmHorizo​​ntalBottomOut .level{  /* 定義一級類別屬性 */
    7.         width:120px; /* 寬度 */
    8.         height:17; /* 高度 */
    9.         position:relative; /* 顯示位置為相對位置 */
    10.         display:block; /* 以區塊模式顯示 */
    11.         background-color:#D8D8D8; /* 背景色 */
    12.         padding:0px 2px; /* 文字內補丁間隔 */
    13.         margin:0px 1px 0px 0px; /* 選單外補丁間隔 */
    14.         float:left;
    15.     }
    16.     .pmHorizo​​ntalBottomOut .level:hover { /* 當滑鼠劃過一級選單 */
    17.         background-color:#6633FF; /* 背景色 */
    18.         color:#FFFFFF; /* 文字顏色 */
    19.     }
    20.     .pmHorizo​​ntalBottomOut .level_{display:none; /* 預設隱藏二級類別 */}
    21.     
    22.     .pmHorizo​​ntalBottomOut .level:hover .level_ { /* 滑鼠劃過時觸發顯示二級類別 */
    23.         display:block; /* 以區塊顯示 */
    24.         width:124px; /* 寬度 */
    25.         height:auto; /* 高度 */
    26.         margin:0px -2px 0px -2px; /* 外補丁 */
    27.         background-color:#EFEFEF; /* 定義背景色 */
    28.         position:absolute; /* 位置為絕對位置 */
    29.     }
    30.     .pmHorizo​​ntalBottomOut .level:hover .level_ .level_title {
    31.         /* 定義二級類別標題樣式 */
    32.         font-weight:bold; /* 字體加粗 */
    33.         background-color:#A7ADFE; /* 背景色 */
    34.         color:white; /* 文字顏色 */
    35.     }
    36.     .pmHorizo​​ntalBottomOut .level:hover .level_ a:hover {
    37.         /* 定義二級類別連結顯示樣式 */
    38.         background-color:#F83658; /* 背景色 */
    39.         color:white; /* 文字顏色 */
    40.     }
    41.     .pmHorizo​​ntalBottomOut .level_ * { 
    42.         /* 定義所有二級類別一般屬性 */
    43.         display:block; /* 以區塊顯示 */
    44.         color:black; /* 文字顏色 */
    45.         padding:0px 2px; /* 內補丁間隔 */
    46.     }
    47. /*]]>*/
    48.     
    49.         level
    50.         
    51.             level_ title
    52.             level_ 標題 1
    53.             level_ 標題 2
    54.             level_ 標題 3
    55.             level_ 標題 4
    56.             level_ 標題 5
    57.         
    58.     
    59.     
    60.         
      level 1
    61.         
    62.             level_ title
    63.             level_ 標題 1
    64.             level_ 標題 2
    65.             level_ title 3
    66. level_標題4
    67.             level_ 標題 5
    68.         
    69.     
    70.     
    71.         
      level 2
    72.         
    73.             level_ title
    74.             level_ 標題 1
    75.             level_ 標題 2
    76.             level_ 標題 3
    77.             level_ 標題 4
    78.             level_ 標題 5
    79.         
    80.     
    81.     
    82.         
      level 3
    83.         
    84.             level_ title
    85.             level_ 標題 1
    86.             level_ 標題 2
    87. level_ title 3
    88.             level_ 標題 4
    89.             level_ 標題 5
    90.         
    91.     
    92.     
    93.         
      level 4
    94.         
    95.             level_ title
    96.             level_ 標題 1
    97.             level_ 標題 2
    98.             level_ title 3
    99.             level_ 標題 4
    100.             level_ 標題 5
    101.         
    102.     

    2.2 相容 IE、Opera、Firefox 的 CSS 彈出式選單(腳本實作)
      linenum
    1. " http://www.w3.org/TR/html4/loose.dtd">
    2. Untitled Document
    3. /*    body{ margin:0px auto; width:768px; /* 定義頁以中顯示,*/}
    4.     *{text-decoration:none!important; /* 定義所有連結不顯示底線 */}
    5.     /* ------------------ start 針對 Opera, Firefox 的 CSS 彈出式選單 ----------------- --*/
    6.     .pmHorizo​​ntalBottomOut{background-color:#fff!important; /* 定義主選單域背景色 */} 
    7.     .pmHorizo​​ntalBottomOut .level{  /* 定義一級類別屬性 */
    8.         width:120px; /* 寬度 */
    9.         height:17; /* 高度 */
    10.         position:relative; /* 顯示位置為相對位置 */
    11.         display:block; /* 以區塊模式顯示 */
    12.         background-color:#D8D8D8; /* 背景色 */
    13.         padding:0px 2px; /* 文字內補丁間隔 */
    14.         margin:0px 1px 0px 0px; /* 選單外補丁間隔 */
    15.         float:left;
    16.     }
    17.     .pmHorizo​​ntalBottomOut .level:hover { /* 當滑鼠劃過一級選單 */
    18.         background-color:#6633FF; /* 背景色 */
    19.         color:#FFFFFF; /* 文字顏色 */
    20.     }
    21.     .pmHorizo​​ntalBottomOut .level_{display:none; /* 預設隱藏二級類別 */}
    22.     
    23.     .pmHorizo​​ntalBottomOut .level:hover .level_ { /* 滑鼠劃過時觸發顯示二級類別 */
    24.         display:block; /* 以區塊顯示 */
    25.         width:124px; /* 寬度 */
    26.         height:auto; /* 高度 */
    27.         margin:0px -2px 0px -2px; /* 外補丁 */
    28.         background-color:#EFEFEF; /* 定義背景色 */
    29.         position:absolute; /* 位置為絕對位置 */
    30.     }
    31.     .pmHorizo​​ntalBottomOut .level:hover .level_ .level_title {
    32.         /* 定義二級類別標題樣式 */
    33.         font-weight:bold; /* 字體加粗 */
    34.         background-color:#A7ADFE; /* 背景色 */
    35.         color:white; /* 文字顏色 */
    36.     }
    37.     .pmHorizo​​ntalBottomOut .level:hover .level_ a:hover {
    38.         /* 定義二級類別連結顯示樣式 */
    39.         background-color:#F83658; /* 背景色 */
    40.         color:white; /* 文字顏色 */
    41.     }
    42.     .pmHorizo​​ntalBottomOut .level_ * { 
    43.         /* 定義所有二級類別一般屬性 */
    44.         display:block; /* 以區塊顯示 */
    45.         color:black; /* 文字顏色 */
    46.         padding:0px 2px; /* 內補丁間隔 */
    47.     }
    48.     /* ------------------ end 針對 Opera, Firefox 的 CSS 彈出式選單 ----------------- --*/
    49.     
    50.     /* ------------------- start 針對 IE 的 CSS 彈出式選單 -------------------- */
    51.     .levelIe{  /* 定義一級類別屬性 */
    52.         width:120px; /* 寬度 */
    53.         height:17; /* 高度 */
    54.         position:relative; /* 顯示位置為相對位置 */
    55.         display:block; /* 以區塊模式顯示 */
    56.         background-color:#D8D8D8; /* 背景色 */
    57.         padding:0px 2px; /* 文字內補丁間隔 */
    58.         margin:0px 1px 0px 0px; /* 選單外補丁間隔 */
    59.         float:left;
    60.     }
    61.     .levelIe { /* 當滑鼠劃過一級選單時 */
    62.         background-color:#6633FF; /* 背景色 */
    63.         color:#FFFFFF; /* 文字顏色 */
    64.     }
    65.     .levelIe .level_ { /* 滑鼠劃過時觸發顯示二級類別 */
    66.         display:block; /* 以區塊顯示 */
    67.         width:124px; /* 寬度 */
    68.         height:auto; /* 高度 */
    69.         margin:0px -2px 0px -2px; /* 外補丁 */
    70.         background-color:#EFEFEF; /* 定義背景色 */
    71.         position:absolute; /* 位置為絕對位置 */
    72.     }
    73.     .levelIe .level_ .level_title {
    74.         /* 定義二級類別標題樣式 */
    75.         font-weight:bold; /* 字體加粗 */
    76.         background-color:#A7ADFE; /* 背景色 */
    77.         color:white; /* 文字顏色 */
    78.     }
    79.     .levelIe .level_ a:hover {
    80.         /* 定義二級類別連結顯示樣式 */
    81.         background-color:#F83658; /* 背景色 */
    82.         color:white; /* 文字顏色 */
    83.     }
    84.     .levelIe .level_ * { 
    85.         /* 定義所有二級類別一般屬性 */
    86.         display:block; /* 以區塊顯示 */
    87.         color:black; /* 文字顏色 */
    88.         padding:0px 2px; /* 內補丁間隔 */
    89.     }
    90.     /* ------------------- end 針對 IE 的 CSS 彈出式選單 -------------------- */
    91. /*]]>*/
    92. //if (navigator.appName=="Microsoft Internet Explorer") {
    93.     function fPmHorizo​​ntalBottomOut() {
    94.         var getItem = document.getElementById("pmHorizo​​ntalBottomOut").getElementsByTagName("div");
    95.         for (var i=0; i            getItem[i].onmouseover=function() { 
    96.                 if(    this.className=="level"){
    97.                     this.className="levelIe";
    98.                 }
    99.             }
    100.             getItem[i].onmouseout=function() { 
    101.                 if(    this.className=="levelIe"){
    102.                     this.className="level";
    103.                 }
    104.             }//css彈出式選單腳本作者:shawl.qiu
    105.         }
    106.     }
    107.     window.onload=fPmHorizo​​ntalBottomOut;
    108. }
    109. //]]>
    110.     
    111.         level
    112.         
    113.             level_ title
    114.             level_ 標題 1
    115.             level_ 標題 2
    116.             level_ 標題 3
    117.             level_ 標題 4
    118.             level_ 標題 5
    119.         
    120.     
    121.     
    122.         
      level 1
    123.         
    124.             level_ title
    125.             level_ 標題 1
    126.             level_ 標題 2
    127.             level_ title 3
    128. level_標題4
    129.             level_ 標題 5
    130.         
    131.     
    132.     
    133.         
      level 2
    134.         
    135.             level_ title
    136.             level_ 標題 1
    137.             level_ 標題 2
    138.             level_ 標題 3
    139.             level_ 標題 4
    140.             level_ 標題 5
    141.         
    142.     
    143.     
    144.         
      level 3
    145.         
    146.             level_ title
    147.             level_ 標題 1
    148.             level_ 標題 2
    149. level_ title 3
    150.             level_ 標題 4
    151.             level_ 標題 5
    152.         
    153.     
    154.     
    155.         
      level 4
    156.         
    157.             level_ title
    158.             level_ 標題 1
    159.             level_ 標題 2
    160.             level_ title 3
    161.             level_ 標題 4
    162.             level_ 標題 5
    163.         
    164.     


    3.結論
    修改以上範例可以看出,如果已經編寫出了一個可用的CSS彈出選單範例,那就要編寫出彈出位置在其他位置的CSS彈出選單的話,只需小小一下就OK了。

    4。預覽

    4.1 1.2 相容 IE、Opera、Firefox 的 CSS 彈出式選單(腳本實作)的預覽
    陳述:
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    上一篇:Lesson02_05 頭元素_基礎教程下一篇:Lesson02_05 頭元素_基礎教程

    相關文章

    看更多