`

编写纯 CSS 弹出菜单的原理及实现 By shawl.qiu

阅读更多

编写纯CSS弹出菜单的原理及实现Byshawl.qiu


摘要:
本文介绍了使用CSS编写适用于Opera,Firefox,IE的多风格弹出菜单

说明:
编写CSS弹出菜单的要点不外乎当鼠标移到目标上时,显示出隐藏的标签.
要隐藏的标签使用display:none;属性进行隐藏.
触发显示隐藏标签主要使用:hover属性,并用display:block;显示隐藏的标签.

但由于浏览器对CSS的支持并非一致.
对于Opera或者Firefox,我们可以编写出纯CSS菜单,他们支持任何标签的:hover属性.
而对于IE浏览器,:hover只对a标签起作用,但我们可以使用脚本的onmouseover,onmouseout模拟出其他标签的:hover属性.
因此编写适用于IE的CSS弹出菜单必须使用到少许的脚本.

目录:
1.编写直排右侧弹出的CSS菜单.
1.1真正的基于Opera,Firefox纯CSS弹出菜单
1.2兼容IE,Opera,Firefox的CSS弹出菜单(脚本实现)

2.编写横排底部弹出的CSS菜单.
2.1真正的基于Opera,Firefox纯CSS弹出菜单
2.2兼容IE,Opera,Firefox的CSS弹出菜单(脚本实现)

3.结论

4.预览

shawl.qiu
2006-10-01
http://blog.csdn.net/btbtd

1.编写直排右侧弹出的CSS菜单.

1.1真正的基于Opera,Firefox纯CSS弹出菜单
    linenum
  1. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
  6. <title>UntitledDocument</title>
  7. <styletype="text/css">
  8. /*<![CDATA[*//*shawl.qiupurecsspopupmenudemo*/
  9. body{margin:0pxauto;width:768px;/*定义页面居中显示,*/}
  10. *{text-decoration:none!important;/*定义所有链接不显示下划线*/}
  11. .pmVerticalRightOut{background-color:#fff!important;/*定义主菜单域背景色*/}
  12. .pmVerticalRightOut.level{/*定义一级类别属性*/
  13. width:120px;/*宽度*/
  14. height:17;/*高度*/
  15. position:relative;/*显示位置为相对位置*/
  16. display:block;/*以块模式显示*/
  17. background-color:#D8D8D8;/*背景色*/
  18. padding:0px2px;/*文字内补丁间隔*/
  19. margin:0px0px1px0px;/*菜单外补丁间隔*/
  20. }
  21. .pmVerticalRightOut.level:hover{/*当鼠标划过一级菜单时*/
  22. background-color:#6633FF;/*背景色*/
  23. color:#FFFFFF;/*文字颜色*/
  24. }
  25. .pmVerticalRightOut.level_{display:none;/*默认隐藏二级类别*/}
  26. .pmVerticalRightOut.level:hover.level_{/*鼠标划过时触发显示二级类别*/
  27. display:block;/*以块显示*/
  28. left:124px;/*相对于一级类别显示的位置*/
  29. width:120px;/*宽度*/
  30. height:auto;/*高度*/
  31. top:0px;/*相对于一级类别所在位置的顶端*/
  32. background-color:#EFEFEF;/*定义背景色*/
  33. position:absolute;/*位置为绝对位置*/
  34. }
  35. .pmVerticalRightOut.level:hover.level_.level_title{
  36. /*定义二级类别标题样式*/
  37. font-weight:bold;/*字体加粗*/
  38. background-color:#A7ADFE;/*背景色*/
  39. color:white;/*文字颜色*/
  40. }
  41. .pmVerticalRightOut.level:hover.level_a:hover{
  42. /*定义二级类别链接显示样式*/
  43. background-color:#F83658;/*背景色*/
  44. color:white;/*文字颜色*/
  45. }
  46. .pmVerticalRightOut.level_*{
  47. /*定义所有二级类别通用属性*/
  48. display:block;/*以块显示*/
  49. color:black;/*文字颜色*/
  50. padding:0px2px;/*内补丁间隔*/
  51. }
  52. /*]]>*/
  53. </style>
  54. </head>
  55. <body>
  56. <p/><p/><p/><p/><p/>
  57. <divclass="pmVerticalRightOut"id="pmVerticalRightOut">
  58. <divclass="level">
  59. <divclass="levelTitle">level</div>
  60. <divclass="level_">
  61. <divclass="level_title">level_title</div>
  62. <ahref="?cat=level&id=1">level_title1</a>
  63. <ahref="?cat=level&id=2">level_title2</a>
  64. <ahref="?cat=level&id=3">level_title3</a>
  65. <ahref="?cat=level&id=4">level_title4</a>
  66. <ahref="?cat=level&id=5">level_title5</a>
  67. </div>
  68. </div>
  69. <divclass="level">
  70. <divclass="levelTitle">level1</div>
  71. <divclass="level_">
  72. <divclass="level_title">level_title</div>
  73. <ahref="?cat=level_1&id=1">level_title1</a>
  74. <ahref="?cat=level_1&id=2">level_title2</a>
  75. <ahref="?cat=level_1&id=3">level_title3</a>
  76. <ahref="?cat=level_1&id=4">level_title4</a>
  77. <ahref="?cat=level_1&id=5">level_title5</a>
  78. </div>
  79. </div>
  80. <divclass="level">
  81. <divclass="levelTitle">level2</div>
  82. <divclass="level_">
  83. <divclass="level_title">level_title</div>
  84. <ahref="?cat=level_2&id=1">level_title1</a>
  85. <ahref="?cat=level_2&id=2">level_title2</a>
  86. <ahref="?cat=level_2&id=3">level_title3</a>
  87. <ahref="?cat=level_2&id=4">level_title4</a>
  88. <ahref="?cat=level_2&id=5">level_title5</a>
  89. </div>
  90. </div>
  91. <divclass="level">
  92. <divclass="levelTitle">level3</div>
  93. <divclass="level_">
  94. <divclass="level_title">level_title</div>
  95. <ahref="?cat=level_3&id=1">level_title1</a>
  96. <ahref="?cat=level_3&id=2">level_title2</a>
  97. <ahref="?cat=level_3&id=3">level_title3</a>
  98. <ahref="?cat=level_3&id=4">level_title4</a>
  99. <ahref="?cat=level_3&id=5">level_title5</a>
  100. </div>
  101. </div>
  102. <divclass="level">
  103. <divclass="levelTitle">level4</div>
  104. <divclass="level_">
  105. <divclass="level_title">level_title</div>
  106. <ahref="?cat=level_4&id=1">level_title1</a>
  107. <ahref="?cat=level_4&id=2">level_title2</a>
  108. <ahref="?cat=level_4&id=3">level_title3</a>
  109. <ahref="?cat=level_4&id=4">level_title4</a>
  110. <ahref="?cat=level_4&id=5">level_title5</a>
  111. </div>
  112. </div>
  113. </div>
  114. </body>
  115. </html>

1.2兼容IE,Opera,Firefox的CSS弹出菜单(脚本实现)
    linenum
  1. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
  6. <title>UntitledDocument</title>
  7. <styletype="text/css">
  8. /*<![CDATA[*//*shawl.qiupurecsspopupmenudemo*/
  9. body{margin:0pxauto;width:768px;/*定义页面居中显示,*/}
  10. *{text-decoration:none!important;/*定义所有链接不显示下划线*/}
  11. /*-------------------start针对Opera,Firefox的CSS弹出菜单-------------------*/
  12. .pmVerticalRightOut{background-color:#fff!important;/*定义主菜单域背景色*/}
  13. .pmVerticalRightOut.level{/*定义一级类别属性*/
  14. width:120px;/*宽度*/
  15. height:17;/*高度*/
  16. position:relative;/*显示位置为相对位置*/
  17. display:block;/*以块模式显示*/
  18. background-color:#D8D8D8;/*背景色*/
  19. padding:0px2px;/*文字内补丁间隔*/
  20. margin:0px0px1px0px;/*菜单外补丁间隔*/
  21. }
  22. .pmVerticalRightOut.level:hover{/*当鼠标划过一级菜单时*/
  23. background-color:#6633FF;/*背景色*/
  24. color:#FFFFFF;/*文字颜色*/
  25. }
  26. .pmVerticalRightOut.level_{display:none;/*默认隐藏二级类别*/}
  27. .pmVerticalRightOut.level:hover.level_{/*鼠标划过时触发显示二级类别*/
  28. display:block;/*以块显示*/
  29. left:124px;/*相对于一级类别显示的位置*/
  30. width:120px;/*宽度*/
  31. height:auto;/*高度*/
  32. top:0px;/*相对于一级类别所在位置的顶端*/
  33. background-color:#EFEFEF;/*定义背景色*/
  34. position:absolute;/*位置为绝对位置*/
  35. }
  36. .pmVerticalRightOut.level:hover.level_.level_title{
  37. /*定义二级类别标题样式*/
  38. font-weight:bold;/*字体加粗*/
  39. background-color:#A7ADFE;/*背景色*/
  40. color:white;/*文字颜色*/
  41. }
  42. .pmVerticalRightOut.level:hover.level_a:hover{
  43. /*定义二级类别链接显示样式*/
  44. background-color:#F83658;/*背景色*/
  45. color:white;/*文字颜色*/
  46. }
  47. .pmVerticalRightOut.level:hover.level_*{
  48. /*定义所有二级类别通用属性*/
  49. display:block;/*以块显示*/
  50. color:black;/*文字颜色*/
  51. padding:0px2px;/*内补丁间隔*/
  52. }
  53. /*-------------------end针对Opera,Firefox的CSS弹出菜单-------------------*/
  54. /*-------------------start针对IE的CSS弹出菜单-------------------*/
  55. .levelIe{/*定义一级类别属性*/
  56. width:120px;/*宽度*/
  57. height:17;/*高度*/
  58. position:relative;/*显示位置为相对位置*/
  59. display:block;/*以块模式显示*/
  60. background-color:#D8D8D8;/*背景色*/
  61. padding:0px2px;/*文字内补丁间隔*/
  62. margin:0px0px1px0px;/*菜单外补丁间隔*/
  63. }
  64. .levelIe.level_{/*鼠标划过时触发显示二级类别*/
  65. display:block;/*以块显示*/
  66. left:124px;/*相对于一级类别显示的位置*/
  67. width:120px;/*宽度*/
  68. height:auto;/*高度*/
  69. top:0px;/*相对于一级类别所在位置的顶端*/
  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:0px2px;/*内补丁间隔*/
  89. }
  90. /*-------------------end针对IE的CSS弹出菜单-------------------*/
  91. /*]]>*/
  92. </style>
  93. <scripttype="text/javascript">
  94. //<![CDATA[
  95. if(navigator.appName=="MicrosoftInternetExplorer"){
  96. functionfPmVerticalRightOut(){
  97. vargetItem=document.getElementById("pmVerticalRightOut").getElementsByTagName("div");
  98. for(vari=0;i<getItem.length;i++){
  99. getItem[i].onmouseover=function(){
  100. if(this.className=="level"){
  101. this.className="levelIe";
  102. }
  103. }
  104. getItem[i].onmouseout=function(){
  105. if(this.className=="levelIe"){
  106. this.className="level";
  107. }
  108. }//csspopupmenuscriptbyshawl.qiu
  109. }
  110. }
  111. window.onload=fPmVerticalRightOut;
  112. }
  113. //]]>
  114. </script>
  115. </head>
  116. <body>
  117. <p/><p/><p/><p/><p/>
  118. <divclass="pmVerticalRightOut"id="pmVerticalRightOut">
  119. <divclass="level">
  120. <divclass="levelTitle">level</div>
  121. <divclass="level_">
  122. <divclass="level_title">level_title</div>
  123. <ahref="?cat=level&id=1">level_title1</a>
  124. <ahref="?cat=level&id=2">level_title2</a>
  125. <ahref="?cat=level&id=3">level_title3</a>
  126. <ahref="?cat=level&id=4">level_title4</a>
  127. <ahref="?cat=level&id=5">level_title5</a>
  128. </div>
  129. </div>
  130. <divclass="level">
  131. <divclass="levelTitle">level1</div>
  132. <divclass="level_">
  133. <divclass="level_title">level_title</div>
  134. <ahref="?cat=level_1&id=1">level_title1</a>
  135. <ahref="?cat=level_1&id=2">level_title2</a>
  136. <ahref="?cat=level_1&id=3">level_title3</a>
  137. <ahref="?cat=level_1&id=4">level_title4</a>
  138. <ahref="?cat=level_1&id=5">level_title5</a>
  139. </div>
  140. </div>
  141. <divclass="level">
  142. <divclass="levelTitle">level2</div>
  143. <divclass="level_">
  144. <divclass="level_title">level_title</div>
  145. <ahref="?cat=level_2&id=1">level_title1</a>
  146. <ahref="?cat=level_2&id=2">level_title2</a>
  147. <ahref="?cat=level_2&id=3">level_title3</a>
  148. <ahref="?cat=level_2&id=4">level_title4</a>
  149. <ahref="?cat=level_2&id=5">level_title5</a>
  150. </div>
  151. </div>
  152. <divclass="level">
  153. <divclass="levelTitle">level3</div>
  154. <divclass="level_">
  155. <divclass="level_title">level_title</div>
  156. <ahref="?cat=level_3&id=1">level_title1</a>
  157. <ahref="?cat=level_3&id=2">level_title2</a>
  158. <ahref="?cat=level_3&id=3">level_title3</a>
  159. <ahref="?cat=level_3&id=4">level_title4</a>
  160. <ahref="?cat=level_3&id=5">level_title5</a>
  161. </div>
  162. </div>
  163. <divclass="level">
  164. <divclass="levelTitle">level4</div>
  165. <divclass="level_">
  166. <divclass="level_title">level_title</div>
  167. <ahref="?cat=level_4&id=1">level_title1</a>
  168. <ahref="?cat=level_4&id=2">level_title2</a>
  169. <ahref="?cat=level_4&id=3">level_title3</a>
  170. <ahref="?cat=level_4&id=4">level_title4</a>
  171. <ahref="?cat=level_4&id=5">level_title5</a>
  172. </div>
  173. </div>
  174. </div>
  175. </body>
  176. </html>

2.编写横排底部弹出的CSS菜单.

2.1真正的基于Opera,Firefox纯CSS弹出菜单
    linenum
  1. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
  6. <title>UntitledDocument</title>
  7. <styletype="text/css">
  8. /*<![CDATA[*//*shawl.qiupurecsspopupmenudemo*/
  9. body{margin:0pxauto;width:768px;/*定义页面居中显示,*/}
  10. *{text-decoration:none!important;/*定义所有链接不显示下划线*/}
  11. .pmHorizontalBottomOut{background-color:#fff!important;/*定义主菜单域背景色*/}
  12. .pmHorizontalBottomOut.level{/*定义一级类别属性*/
  13. width:120px;/*宽度*/
  14. height:17;/*高度*/
  15. position:relative;/*显示位置为相对位置*/
  16. display:block;/*以块模式显示*/
  17. background-color:#D8D8D8;/*背景色*/
  18. padding:0px2px;/*文字内补丁间隔*/
  19. margin:0px1px0px0px;/*菜单外补丁间隔*/
  20. float:left;
  21. }
  22. .pmHorizontalBottomOut.level:hover{/*当鼠标划过一级菜单时*/
  23. background-color:#6633FF;/*背景色*/
  24. color:#FFFFFF;/*文字颜色*/
  25. }
  26. .pmHorizontalBottomOut.level_{display:none;/*默认隐藏二级类别*/}
  27. .pmHorizontalBottomOut.level:hover.level_{/*鼠标划过时触发显示二级类别*/
  28. display:block;/*以块显示*/
  29. width:124px;/*宽度*/
  30. height:auto;/*高度*/
  31. margin:0px-2px0px-2px;/*外补丁*/
  32. background-color:#EFEFEF;/*定义背景色*/
  33. position:absolute;/*位置为绝对位置*/
  34. }
  35. .pmHorizontalBottomOut.level:hover.level_.level_title{
  36. /*定义二级类别标题样式*/
  37. font-weight:bold;/*字体加粗*/
  38. background-color:#A7ADFE;/*背景色*/
  39. color:white;/*文字颜色*/
  40. }
  41. .pmHorizontalBottomOut.level:hover.level_a:hover{
  42. /*定义二级类别链接显示样式*/
  43. background-color:#F83658;/*背景色*/
  44. color:white;/*文字颜色*/
  45. }
  46. .pmHorizontalBottomOut.level_*{
  47. /*定义所有二级类别通用属性*/
  48. display:block;/*以块显示*/
  49. color:black;/*文字颜色*/
  50. padding:0px2px;/*内补丁间隔*/
  51. }
  52. /*]]>*/
  53. </style>
  54. </head>
  55. <body>
  56. <p/><p/><p/><p/><p/>
  57. <divclass="pmHorizontalBottomOut"id="pmHorizontalBottomOut">
  58. <divclass="level">
  59. <divclass="levelTitle">level</div>
  60. <divclass="level_">
  61. <divclass="level_title">level_title</div>
  62. <ahref="?cat=level&id=1">level_title1</a>
  63. <ahref="?cat=level&id=2">level_title2</a>
  64. <ahref="?cat=level&id=3">level_title3</a>
  65. <ahref="?cat=level&id=4">level_title4</a>
  66. <ahref="?cat=level&id=5">level_title5</a>
  67. </div>
  68. </div>
  69. <divclass="level">
  70. <divclass="levelTitle">level1</div>
  71. <divclass="level_">
  72. <divclass="level_title">level_title</div>
  73. <ahref="?cat=level_1&id=1">level_title1</a>
  74. <ahref="?cat=level_1&id=2">level_title2</a>
  75. <ahref="?cat=level_1&id=3">level_title3</a>
  76. <ahref="?cat=level_1&id=4">level_title4</a>
  77. <ahref="?cat=level_1&id=5">level_title5</a>
  78. </div>
  79. </div>
  80. <divclass="level">
  81. <divclass="levelTitle">level2</div>
  82. <divclass="level_">
  83. <divclass="level_title">level_title</div>
  84. <ahref="?cat=level_2&id=1">level_title1</a>
  85. <ahref="?cat=level_2&id=2">level_title2</a>
  86. <ahref="?cat=level_2&id=3">level_title3</a>
  87. <ahref="?cat=level_2&id=4">level_title4</a>
  88. <ahref="?cat=level_2&id=5">level_title5</a>
  89. </div>
  90. </div>
  91. <divclass="level">
  92. <divclass="levelTitle">level3</div>
  93. <divclass="level_">
  94. <divclass="level_title">level_title</div>
  95. <ahref="?cat=level_3&id=1">level_title1</a>
  96. <ahref="?cat=level_3&id=2">level_title2</a>
  97. <ahref="?cat=level_3&id=3">level_title3</a>
  98. <ahref="?cat=level_3&id=4">level_title4</a>
  99. <ahref="?cat=level_3&id=5">level_title5</a>
  100. </div>
  101. </div>
  102. <divclass="level">
  103. <divclass="levelTitle">level4</div>
  104. <divclass="level_">
  105. <divclass="level_title">level_title</div>
  106. <ahref="?cat=level_4&id=1">level_title1</a>
  107. <ahref="?cat=level_4&id=2">level_title2</a>
  108. <ahref="?cat=level_4&id=3">level_title3</a>
  109. <ahref="?cat=level_4&id=4">level_title4</a>
  110. <ahref="?cat=level_4&id=5">level_title5</a>
  111. </div>
  112. </div>
  113. </div>
  114. </body>
  115. </html>

2.2兼容IE,Opera,Firefox的CSS弹出菜单(脚本实现)
    linenum
  1. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
  2. " http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
  6. <title>UntitledDocument</title>
  7. <styletype="text/css">
  8. /*<![CDATA[*//*shawl.qiupurecsspopupmenudemo*/
  9. body{margin:0pxauto;width:768px;/*定义页面居中显示,*/}
  10. *{text-decoration:none!important;/*定义所有链接不显示下划线*/}
  11. /*-------------------start针对Opera,Firefox的CSS弹出菜单-------------------*/
  12. .pmHorizontalBottomOut{background-color:#fff!important;/*定义主菜单域背景色*/}
  13. .pmHorizontalBottomOut.level{/*定义一级类别属性*/
  14. width:120px;/*宽度*/
  15. height:17;/*高度*/
  16. position:relative;/*显示位置为相对位置*/
  17. display:block;/*以块模式显示*/
  18. background-color:#D8D8D8;/*背景色*/
  19. padding:0px2px;/*文字内补丁间隔*/
  20. margin:0px1px0px0px;/*菜单外补丁间隔*/
  21. float:left;
  22. }
  23. .pmHorizontalBottomOut.level:hover{/*当鼠标划过一级菜单时*/
  24. background-color:#6633FF;/*背景色*/
  25. color:#FFFFFF;/*文字颜色*/
  26. }
  27. .pmHorizontalBottomOut.level_{display:none;/*默认隐藏二级类别*/}
  28. .pmHorizontalBottomOut.level:hover.level_{/*鼠标划过时触发显示二级类别*/
  29. display:block;/*以块显示*/
  30. width:124px;/*宽度*/
  31. height:auto;/*高度*/
  32. margin:0px-2px0px-2px;/*外补丁*/
  33. background-color:#EFEFEF;/*定义背景色*/
  34. position:absolute;/*位置为绝对位置*/
  35. }
  36. .pmHorizontalBottomOut.level:hover.level_.level_title{
  37. /*定义二级类别标题样式*/
  38. font-weight:bold;/*字体加粗*/
  39. background-color:#A7ADFE;/*背景色*/
  40. color:white;/*文字颜色*/
  41. }
  42. .pmHorizontalBottomOut.level:hover.level_a:hover{
  43. /*定义二级类别链接显示样式*/
  44. background-color:#F83658;/*背景色*/
  45. color:white;/*文字颜色*/
  46. }
  47. .pmHorizontalBottomOut.level_*{
  48. /*定义所有二级类别通用属性*/
  49. display:block;/*以块显示*/
  50. color:black;/*文字颜色*/
  51. padding:0px2px;/*内补丁间隔*/
  52. }
  53. /*-------------------end针对Opera,Firefox的CSS弹出菜单-------------------*/
  54. /*-------------------start针对IE的CSS弹出菜单-------------------*/
  55. .levelIe{/*定义一级类别属性*/
  56. width:120px;/*宽度*/
  57. height:17;/*高度*/
  58. position:relative;/*显示位置为相对位置*/
  59. display:block;/*以块模式显示*/
  60. background-color:#D8D8D8;/*背景色*/
  61. padding:0px2px;/*文字内补丁间隔*/
  62. margin:0px1px0px0px;/*菜单外补丁间隔*/
  63. float:left;
  64. }
  65. .levelIe{/*当鼠标划过一级菜单时*/
  66. background-color:#6633FF;/*背景色*/
  67. color:#FFFFFF;/*文字颜色*/
  68. }
  69. .levelIe.level_{/*鼠标划过时触发显示二级类别*/
  70. display:block;/*以块显示*/
  71. width:124px;/*宽度*/
  72. height:auto;/*高度*/
  73. margin:0px-2px0px-2px;/*外补丁*/
  74. background-color:#EFEFEF;/*定义背景色*/
  75. position:absolute;/*位置为绝对位置*/
  76. }
  77. .levelIe.level_.level_title{
  78. /*定义二级类别标题样式*/
  79. font-weight:bold;/*字体加粗*/
  80. background-color:#A7ADFE;/*背景色*/
  81. color:white;/*文字颜色*/
  82. }
  83. .levelIe.level_a:hover{
  84. /*定义二级类别链接显示样式*/
  85. background-color:#F83658;/*背景色*/
  86. color:white;/*文字颜色*/
  87. }
  88. .levelIe.level_*{
  89. /*定义所有二级类别通用属性*/
  90. display:block;/*以块显示*/
  91. color:black;/*文字颜色*/
  92. padding:0px2px;/*内补丁间隔*/
  93. }
  94. /*-------------------end针对IE的CSS弹出菜单-------------------*/
  95. /*]]>*/
  96. </style>
  97. <scripttype="text/javascript">
  98. //<![CDATA[
  99. if(navigator.appName=="MicrosoftInternetExplorer"){
  100. functionfPmHorizontalBottomOut(){
  101. vargetItem=document.getElementById("pmHorizontalBottomOut").getElementsByTagName("div");
  102. for(vari=0;i<getItem.length;i++){
  103. getItem[i].onmouseover=function(){
  104. if(this.className=="level"){
  105. this.className="levelIe";
  106. }
  107. }
  108. getItem[i].onmouseout=function(){
  109. if(this.className=="levelIe"){
  110. this.className="level";
  111. }
  112. }//csspopupmenuscriptbyshawl.qiu
  113. }
  114. }
  115. window.onload=fPmHorizontalBottomOut;
  116. }
  117. //]]>
  118. </script>
  119. </head>
  120. <body>
  121. <p/><p/><p/><p/><p/>
  122. <divclass="pmHorizontalBottomOut"id="pmHorizontalBottomOut">
  123. <divclass="level">
  124. <divclass="levelTitle">level</div>
  125. <divclass="level_">
  126. <divclass="level_title">level_title</div>
  127. <ahref="?cat=level&id=1">level_title1</a>
  128. <ahref="?cat=level&id=2">level_title2</a>
  129. <ahref="?cat=level&id=3">level_title3</a>
  130. <ahref="?cat=level&id=4">level_title4</a>
  131. <ahref="?cat=level&id=5">level_title5</a>
  132. </div>
  133. </div>
  134. <divclass="level">
  135. <divclass="levelTitle">level1</div>
  136. <divclass="level_">
  137. <divclass="level_title">level_title</div>
  138. <ahref="?cat=level_1&id=1">level_title1</a>
  139. <ahref="?cat=level_1&id=2">level_title2</a>
  140. <ahref="?cat=level_1&id=3">level_title3</a>
  141. <ahref="?cat=level_1&id=4">level_title4</a>
  142. <ahref="?cat=level_1&id=5">level_title5</a>
  143. </div>
  144. </div>
  145. <divclass="level">
  146. <divclass="levelTitle">level2</div>
  147. <divclass="level_">
  148. <divclass="level_title">level_title</div>
  149. <ahref="?cat=level_2&id=1">level_title1</a>
  150. <ahref="?cat=level_2&id=2">level_title2</a>
  151. <ahref="?cat=level_2&id=3">level_title3</a>
  152. <ahref="?cat=level_2&id=4">level_title4</a>
  153. <ahref="?cat=level_2&id=5">level_title5</a>
  154. </div>
  155. </div>
  156. <divclass="level">
  157. <divclass="levelTitle">level3</div>
  158. <divclass="level_">
  159. <divclass="level_title">level_title</div>
  160. <ahref="?cat=level_3&id=1">level_title1</a>
  161. <ahref="?cat=level_3&id=2">level_title2</a>
  162. <ahref="?cat=level_3&id=3">level_title3</a>
  163. <ahref="?cat=level_3&id=4">level_title4</a>
  164. <ahref="?cat=level_3&id=5">level_title5</a>
  165. </div>
  166. </div>
  167. <divclass="level">
  168. <divclass="levelTitle">level4</div>
  169. <divclass="level_">
  170. <divclass="level_title">level_title</div>
  171. <ahref="?cat=level_4&id=1">level_title1</a>
  172. <ahref="?cat=level_4&id=2">level_title2</a>
  173. <ahref="?cat=level_4&id=3">level_title3</a>
  174. <ahref="?cat=level_4&id=4">level_title4</a>
  175. <ahref="?cat=level_4&id=5">level_title5</a>
  176. </div>
  177. </div>
  178. </div>
  179. </body>
  180. </html>


3.结论
以上例子可以看出,如果已经编写出一个可用的CSS弹出菜单例子,那要编写出弹出位置在其他地方的CSS弹出菜单的话,只须小小修改一下就OK.

4.预览

4.11.2兼容IE,Opera,Firefox的CSS弹出菜单(脚本实现)的预览
<style type="text/css"> /*<![CDATA[*/ /* shawl.qiu pure css popup menu demo */ body{ margin:0px auto; width:768px; /* 定义页面居中显示,*/} *{text-decoration:none!important; /* 定义所有链接不显示下划线 */} /* ------------------- start 针对 Opera, Firefox 的 CSS 弹出菜单 -------------------*/ .pmVerticalRightOut{background-color:#fff!important; /* 定义主菜单域背景色 */} .pmVerticalRightOut .level{ /* 定义一级类别属性 */ width:120px; /* 宽度 */ height:17; /* 高度 */ position:relative; /* 显示位置为相对位置 */ display:block; /* 以块模式显示 */ background-color:#D8D8D8; /* 背景色 */ padding:0px 2px; /* 文字内补丁间隔 */ margin:0px 0px 1px 0px; /* 菜单外补丁间隔 */ } .pmVerticalRightOut .level:hover { /* 当鼠标划过一级菜单时 */ background-color:#6633FF; /* 背景色 */ color:#FFFFFF; /* 文字颜色 */ } .pmVerticalRightOut .level_{display:none; /* 默认隐藏二级类别 */} .pmVerticalRightOut .level:hover .level_ { /* 鼠标划过时触发显示二级类别 */ display:block; /* 以块显示 */ left:124px; /* 相对于一级类别显示的位置 */ width:120px; /* 宽度 */ height:auto; /* 高度 */ top:0px; /* 相对于一级类别所在位置的顶端 */ background-color:#EFEFEF; /* 定义背景色 */ position:absolute; /* 位置为绝对位置 */ } .pmVerticalRightOut .level:hover .level_ .level_title { /* 定义二级类别标题样式 */ font-weight:bold; /* 字体加粗 */ background-color:#A7ADFE; /* 背景色 */ color:white; /* 文字颜色 */ } .pmVerticalRightOut .level:hover .level_ a:hover { /* 定义二级类别链接显示样式 */ background-color:#F83658; /* 背景色 */ color:white; /* 文字颜色 */ } .pmVerticalRightOut .level:hover .level_ * { /* 定义所有二级类别通用属性 */ display:block; /* 以块显示 */ color:black; /* 文字颜色 */ padding:0px 2px; /* 内补丁间隔 */ } /* ------------------- end 针对 Opera, Firefox 的 CSS 弹出菜单 -------------------*/ /* ------------------- start 针对 IE 的 CSS 弹出菜单 -------------------*/ .levelIe{ /* 定义一级类别属性 */ width:120px; /* 宽度 */ height:17; /* 高度 */ position:relative; /* 显示位置为相对位置 */ display:block; /* 以块模式显示 */ background-color:#D8D8D8; /* 背景色 */ padding:0px 2px; /* 文字内补丁间隔 */ margin:0px 0px 1px 0px; /* 菜单外补丁间隔 */ } .levelIe .level_ { /* 鼠标划过时触发显示二级类别 */ display:block; /* 以块显示 */ left:124px; /* 相对于一级类别显示的位置 */ width:120px; /* 宽度 */ height:auto; /* 高度 */ top:0px; /* 相对于一级类别所在位置的顶端 */ background-color:#EFEFEF; /* 定义背景色 */ position:absolute; /* 位置为绝对位置 */ } .levelIe .level_ .level_title { /* 定义二级类别标题样式 */ font-weight:bold; /* 字体加粗 */ background-color:#A7ADFE; /* 背景色 */ color:white; /* 文字颜色 */ } .levelIe .level_ a:hover { /* 定义二级类别链接显示样式 */ background-color:#F83658; /* 背景色 */ color:white; /* 文字颜色 */ } .levelIe .level_ * { /* 定义所有二级类别通用属性 */ display:block; /* 以块显示 */ color:black; /* 文字颜色 */ padding:0px 2px; /* 内补丁间隔 */ } /* ------------------- end 针对 IE 的 CSS 弹出菜单 -------------------*//*]]>*/</style>//

4.22.2兼容IE,Opera,Firefox的CSS弹出菜单(脚本实现)的预览
<style type="text/css"> /*<![CDATA[*/ /* shawl.qiu pure css popup menu demo */ body{ margin:0px auto; width:768px; /* 定义页面居中显示,*/} *{text-decoration:none!important; /* 定义所有链接不显示下划线 */} /* ------------------- start 针对 Opera, Firefox 的 CSS 弹出菜单 -------------------*/ .pmHorizontalBottomOut{background-color:#fff!important; /* 定义主菜单域背景色 */} .pmHorizontalBottomOut .level{ /* 定义一级类别属性 */ width:120px; /* 宽度 */ height:17; /* 高度 */ position:relative; /* 显示位置为相对位置 */ display:block; /* 以块模式显示 */ background-color:#D8D8D8; /* 背景色 */ padding:0px 2px; /* 文字内补丁间隔 */ margin:0px 1px 0px 0px; /* 菜单外补丁间隔 */ float:left; } .pmHorizontalBottomOut .level:hover { /* 当鼠标划过一级菜单时 */ background-color:#6633FF; /* 背景色 */ color:#FFFFFF; /* 文字颜色 */ } .pmHorizontalBottomOut .level_{display:none; /* 默认隐藏二级类别 */} .pmHorizontalBottomOut .level:hover .level_ { /* 鼠标划过时触发显示二级类别 */ display:block; /* 以块显示 */ width:124px; /* 宽度 */ height:auto; /* 高度 */ margin:0px -2px 0px -2px; /* 外补丁 */ background-color:#EFEFEF; /* 定义背景色 */ position:absolute; /* 位置为绝对位置 */ } .pmHorizontalBottomOut .level:hover .level_ .level_title { /* 定义二级类别标题样式 */ font-weight:bold; /* 字体加粗 */ background-color:#A7ADFE; /* 背景色 */ color:white; /* 文字颜色 */ } .pmHorizontalBottomOut .level:hover .level_ a:hover { /* 定义二级类别链接显示样式 */ background-color:#F83658; /* 背景色 */ color:white; /* 文字颜色 */ } .pmHorizontalBottomOut .level_ * { /* 定义所有二级类别通用属性 */ display:block; /* 以块显示 */ color:black; /* 文字颜色 */ padding:0px 2px; /* 内补丁间隔 */ } /* ------------------- end 针对 Opera, Firefox 的 CSS 弹出菜单 -------------------*/ /* ------------------- start 针对 Opera, Firefox 的 CSS 弹出菜单 -------------------*/ .levelIe{ /* 定义一级类别属性 */ width:120px; /* 宽度 */ height:17; /* 高度 */ position:relative; /* 显示位置为相对位置 */ display:block; /* 以块模式显示 */ background-color:#D8D8D8; /* 背景色 */ padding:0px 2px; /* 文字内补丁间隔 */ margin:0px 1px 0px 0px; /* 菜单外补丁间隔 */ float:left; } .levelIe { /* 当鼠标划过一级菜单时 */ background-color:#6633FF; /* 背景色 */ color:#FFFFFF; /* 文字颜色 */ } .levelIe .level_ { /* 鼠标划过时触发显示二级类别 */ display:block; /* 以块显示 */ width:124px; /* 宽度 */ height:auto; /* 高度 */ margin:0px -2px 0px -2px; /* 外补丁 */ background-color:#EFEFEF; /* 定义背景色 */ position:absolute; /* 位置为绝对位置 */ } .levelIe .level_ .level_title { /* 定义二级类别标题样式 */ font-weight:bold; /* 字体加粗 */ background-color:#A7ADFE; /* 背景色 */ color:white; /* 文字颜色 */ } .levelIe .level_ a:hover { /* 定义二级类别链接显示样式 */ background-color:#F83658; /* 背景色 */ color:white; /* 文字颜色 */ } .levelIe .level_ * { /* 定义所有二级类别通用属性 */ display:block; /* 以块显示 */ color:black; /* 文字颜色 */ padding:0px 2px; /* 内补丁间隔 */ } /* ------------------- end 针对 Opera, Firefox 的 CSS 弹出菜单 -------------------*//*]]>*/</style>/*//*/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics