当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > 编写纯 CSS 弹出菜单的原理及实现 By shawl.qiu

CSS样式表
CSS 表单元素不继承body的字体属性
网页制作学习教程 CSS Position
网页设计学习教程 CSS盒模型
vertical-align 表单元素垂直对齐的解决方法
不用Cookie的仿刷新二级高亮菜单
CSS3 优势以及网页设计师如何使用CSS3技术
CSS 网页制作 提高CSS可阅读性
CSS 样式表中引用图片地址在各浏览器中的差异
CSS Sprite优化 减少HTTP链接数
网页制作中应用的50个CSS技巧(国外)
CSS 英文教程 CSS语法
CSS 网页文字渐变效果
纯css 圆角实现代码
CSS 新的图像替换方法
不必需的样式脚本文件导致页面不能及时更新
CSS 约定写法 利用扩展
最全的CSS浏览器兼容问题小结
CSS 网页图文混排的10个技巧
IE的CSS制作网页技巧3则
创造100% 自适应css布局的行之有效的方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 125 ::
收藏到网摘: n/a

编写纯 CSS 弹出菜单的原理及实现 By shawl.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. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. " http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>Untitled Document</title>
  7. <style type="text/css">
  8. /*<![CDATA[*/ /* shawl.qiu pure css popup menu demo */
  9. body{ margin:0px auto; 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:0px 2px; /* 文字内补丁间隔 */
  19. margin:0px 0px 1px 0px; /* 菜单外补丁间隔 */
  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:0px 2px; /* 内补丁间隔 */
  51. }
  52. /*]]>*/
  53. </style>
  54. </head>
  55. <body>
  56. <p/><p/><p/><p/><p/>
  57. <div class="pmVerticalRightOut" id="pmVerticalRightOut">
  58. <div class="level">
  59. <div class="levelTitle">level</div>
  60. <div class="level_">
  61. <div class="level_title">level_ title</div>
  62. <a href="?cat=level&id=1">level_ title 1</a>
  63. <a href="?cat=level&id=2">level_ title 2</a>
  64. <a href="?cat=level&id=3">level_ title 3</a>
  65. <a href="?cat=level&id=4">level_ title 4</a>
  66. <a href="?cat=level&id=5">level_ title 5</a>
  67. </div>
  68. </div>
  69. <div class="level">
  70. <div class="levelTitle">level 1</div>
  71. <div class="level_">
  72. <div class="level_title">level_ title</div>
  73. <a href="?cat=level_1&id=1">level_ title 1</a>
  74. <a href="?cat=level_1&id=2">level_ title 2</a>
  75. <a href="?cat=level_1&id=3">level_ title 3</a>
  76. <a href="?cat=level_1&id=4">level_ title 4</a>
  77. <a href="?cat=level_1&id=5">level_ title 5</a>
  78. </div>
  79. </div>
  80. <div class="level">
  81. <div class="levelTitle">level 2</div>
  82. <div class="level_">
  83. <div class="level_title">level_ title</div>
  84. <a href="?cat=level_2&id=1">level_ title 1</a>
  85. <a href="?cat=level_2&id=2">level_ title 2</a>
  86. <a href="?cat=level_2&id=3">level_ title 3</a>
  87. <a href="?cat=level_2&id=4">level_ title 4</a>
  88. <a href="?cat=level_2&id=5">level_ title 5</a>
  89. </div>
  90. </div>
  91. <div class="level">
  92. <div class="levelTitle">level 3</div>
  93. <div class="level_">
  94. <div class="level_title">level_ title</div>
  95. <a href="?cat=level_3&id=1">level_ title 1</a>
  96. <a href="?cat=level_3&id=2">level_ title 2</a>
  97. <a href="?cat=level_3&id=3">level_ title 3</a>
  98. <a href="?cat=level_3&id=4">level_ title 4</a>
  99. <a href="?cat=level_3&id=5">level_ title 5</a>
  100. </div>
  101. </div>
  102. <div class="level">
  103. <div class="levelTitle">level 4</div>
  104. <div class="level_">
  105. <div class="level_title">level_ title</div>
  106. <a href="?cat=level_4&id=1">level_ title 1</a>
  107. <a href="?cat=level_4&id=2">level_ title 2</a>
  108. <a href="?cat=level_4&id=3">level_ title 3</a>
  109. <a href="?cat=level_4&id=4">level_ title 4</a>
  110. <a href="?cat=level_4&id=5">level_ title 5</a>
  111. </div>
  112. </div>
  113. </div>
  114. </body>
  115. </html>

1.2 兼容 IE, Opera, Firefox 的 CSS 弹出菜单(脚本实现)
    linenum
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. " http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>Untitled Document</title>
  7. <style type="text/css">
  8. /*<![CDATA[*/ /* shawl.qiu pure css popup menu demo */
  9. body{ margin:0px auto; 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:0px 2px; /* 文字内补丁间隔 */
  20. margin:0px 0px 1px 0px; /* 菜单外补丁间隔 */
  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:0px 2px; /* 内补丁间隔 */
  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:0px 2px; /* 文字内补丁间隔 */
  62. margin:0px 0px 1px 0px; /* 菜单外补丁间隔 */
  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:0px 2px; /* 内补丁间隔 */
  89. }
  90. /* ------------------- end 针对 IE 的 CSS 弹出菜单 -------------------*/
  91. /*]]>*/
  92. </style>
  93. <script type="text/javascript">
  94. //<![CDATA[
  95. if (navigator.appName=="Microsoft Internet Explorer") {
  96. function fPmVerticalRightOut() {
  97. var getItem = document.getElementById("pmVerticalRightOut").getElementsByTagName("div");
  98. for (var i=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. }//css popup menu script by shawl.qiu
  109. }
  110. }
  111. window.onload=fPmVerticalRightOut;
  112. }
  113. //]]>
  114. </script>
  115. </head>
  116. <body>
  117. <p/><p/><p/><p/><p/>
  118. <div class="pmVerticalRightOut" id="pmVerticalRightOut">
  119. <div class="level">
  120. <div class="levelTitle">level</div>
  121. <div class="level_">
  122. <div class="level_title">level_ title</div>
  123. <a href="?cat=level&id=1">level_ title 1</a>
  124. <a href="?cat=level&id=2">level_ title 2</a>
  125. <a href="?cat=level&id=3">level_ title 3</a>
  126. <a href="?cat=level&id=4">level_ title 4</a>
  127. <a href="?cat=level&id=5">level_ title 5</a>
  128. </div>
  129. </div>
  130. <div class="level">
  131. <div class="levelTitle">level 1</div>
  132. <div class="level_">
  133. <div class="level_title">level_ title</div>
  134. <a href="?cat=level_1&id=1">level_ title 1</a>
  135. <a href="?cat=level_1&id=2">level_ title 2</a>
  136. <a href="?cat=level_1&id=3">level_ title 3</a>
  137. <a href="?cat=level_1&id=4">level_ title 4</a>
  138. <a href="?cat=level_1&id=5">level_ title 5</a>
  139. </div>
  140. </div>
  141. <div class="level">
  142. <div class="levelTitle">level 2</div>
  143. <div class="level_">
  144. <div class="level_title">level_ title</div>
  145. <a href="?cat=level_2&id=1">level_ title 1</a>
  146. <a href="?cat=level_2&id=2">level_ title 2</a>
  147. <a href="?cat=level_2&id=3">level_ title 3</a>
  148. <a href="?cat=level_2&id=4">level_ title 4</a>
  149. <a href="?cat=level_2&id=5">level_ title 5</a>
  150. </div>
  151. </div>
  152. <div class="level">
  153. <div class="levelTitle">level 3</div>
  154. <div class="level_">
  155. <div class="level_title">level_ title</div>
  156. <a href="?cat=level_3&id=1">level_ title 1</a>
  157. <a href="?cat=level_3&id=2">level_ title 2</a>
  158. <a href="?cat=level_3&id=3">level_ title 3</a>
  159. <a href="?cat=level_3&id=4">level_ title 4</a>
  160. <a href="?cat=level_3&id=5">level_ title 5</a>
  161. </div>
  162. </div>
  163. <div class="level">
  164. <div class="levelTitle">level 4</div>
  165. <div class="level_">
  166. <div class="level_title">level_ title</div>
  167. <a href="?cat=level_4&id=1">level_ title 1</a>
  168. <a href="?cat=level_4&id=2">level_ title 2</a>
  169. <a href="?cat=level_4&id=3">level_ title 3</a>
  170. <a href="?cat=level_4&id=4">level_ title 4</a>
  171. <a href="?cat=level_4&id=5">level_ title 5</a>
  172. </div>
  173. </div>
  174. </div>
  175. </body>
  176. </html>

2. 编写横排底部弹出的 CSS 菜单.
2.1 真正的基于 Opera, Firefox 纯 CSS 弹出菜单
    linenum
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. " http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>Untitled Document</title>
  7. <style type="text/css">
  8. /*<![CDATA[*/ /* shawl.qiu pure css popup menu demo */
  9. body{ margin:0px auto; 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:0px 2px; /* 文字内补丁间隔 */
  19. margin:0px 1px 0px 0px; /* 菜单外补丁间隔 */
  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 -2px 0px -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:0px 2px; /* 内补丁间隔 */
  51. }
  52. /*]]>*/
  53. </style>
  54. </head>
  55. <body>
  56. <p/><p/><p/><p/><p/>
  57. <div class="pmHorizontalBottomOut" id="pmHorizontalBottomOut">
  58. <div class="level">
  59. <div class="levelTitle">level</div>
  60. <div class="level_">
  61. <div class="level_title">level_ title</div>
  62. <a href="?cat=level&id=1">level_ title 1</a>
  63. <a href="?cat=level&id=2">level_ title 2</a>
  64. <a href="?cat=level&id=3">level_ title 3</a>
  65. <a href="?cat=level&id=4">level_ title 4</a>
  66. <a href="?cat=level&id=5">level_ title 5</a>
  67. </div>
  68. </div>
  69. <div class="level">
  70. <div class="levelTitle">level 1</div>
  71. <div class="level_">
  72. <div class="level_title">level_ title</div>
  73. <a href="?cat=level_1&id=1">level_ title 1</a>
  74. <a href="?cat=level_1&id=2">level_ title 2</a>
  75. <a href="?cat=level_1&id=3">level_ title 3</a>
  76. <a href="?cat=level_1&id=4">level_ title 4</a>
  77. <a href="?cat=level_1&id=5">level_ title 5</a>
  78. </div>
  79. </div>
  80. <div class="level">
  81. <div class="levelTitle">level 2</div>
  82. <div class="level_">
  83. <div class="level_title">level_ title</div>
  84. <a href="?cat=level_2&id=1">level_ title 1</a>
  85. <a href="?cat=level_2&id=2">level_ title 2</a>
  86. <a href="?cat=level_2&id=3">level_ title 3</a>
  87. <a href="?cat=level_2&id=4">level_ title 4</a>
  88. <a href="?cat=level_2&id=5">level_ title 5</a>
  89. </div>
  90. </div>
  91. <div class="level">
  92. <div class="levelTitle">level 3</div>
  93. <div class="level_">
  94. <div class="level_title">level_ title</div>
  95. <a href="?cat=level_3&id=1">level_ title 1</a>
  96. <a href="?cat=level_3&id=2">level_ title 2</a>
  97. <a href="?cat=level_3&id=3">level_ title 3</a>
  98. <a href="?cat=level_3&id=4">level_ title 4</a>
  99. <a href="?cat=level_3&id=5">level_ title 5</a>
  100. </div>
  101. </div>
  102. <div class="level">
  103. <div class="levelTitle">level 4</div>
  104. <div class="level_">
  105. <div class="level_title">level_ title</div>
  106. <a href="?cat=level_4&id=1">level_ title 1</a>
  107. <a href="?cat=level_4&id=2">level_ title 2</a>
  108. <a href="?cat=level_4&id=3">level_ title 3</a>
  109. <a href="?cat=level_4&id=4">level_ title 4</a>
  110. <a href="?cat=level_4&id=5">level_ title 5</a>
  111. </div>
  112. </div>
  113. </div>
  114. </body>
  115. </html>

2.2 兼容 IE, Opera, Firefox 的 CSS 弹出菜单(脚本实现)
    linenum
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. " http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>Untitled Document</title>
  7. <style type="text/css">
  8. /*<![CDATA[*/ /* shawl.qiu pure css popup menu demo */
  9. body{ margin:0px auto; 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:0px 2px; /* 文字内补丁间隔 */
  20. margin:0px 1px 0px 0px; /* 菜单外补丁间隔 */
  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 -2px 0px -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:0px 2px; /* 内补丁间隔 */
  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:0px 2px; /* 文字内补丁间隔 */
  62. margin:0px 1px 0px 0px; /* 菜单外补丁间隔 */
  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 -2px 0px -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:0px 2px; /* 内补丁间隔 */
  93. }
  94. /* ------------------- end 针对 IE 的 CSS 弹出菜单 -------------------*/
  95. /*]]>*/
  96. </style>
  97. <script type="text/javascript">
  98. //<![CDATA[
  99. if (navigator.appName=="Microsoft Internet Explorer") {
  100. function fPmHorizontalBottomOut() {
  101. var getItem = document.getElementById("pmHorizontalBottomOut").getElementsByTagName("div");
  102. for (var i=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. }//css popup menu script by shawl.qiu
  113. }
  114. }
  115. window.onload=fPmHorizontalBottomOut;
  116. }
  117. //]]>
  118. </script>
  119. </head>
  120. <body>
  121. <p/><p/><p/><p/><p/>
  122. <div class="pmHorizontalBottomOut" id="pmHorizontalBottomOut">
  123. <div class="level">
  124. <div class="levelTitle">level</div>
  125. <div class="level_">
  126. <div class="level_title">level_ title</div>
  127. <a href="?cat=level&id=1">level_ title 1</a>
  128. <a href="?cat=level&id=2">level_ title 2</a>
  129. <a href="?cat=level&id=3">level_ title 3</a>
  130. <a href="?cat=level&id=4">level_ title 4</a>
  131. <a href="?cat=level&id=5">level_ title 5</a>
  132. </div>
  133. </div>
  134. <div class="level">
  135. <div class="levelTitle">level 1</div>
  136. <div class="level_">
  137. <div class="level_title">level_ title</div>
  138. <a href="?cat=level_1&id=1">level_ title 1</a>
  139. <a href="?cat=level_1&id=2">level_ title 2</a>
  140. <a href="?cat=level_1&id=3">level_ title 3</a>
  141. <a href="?cat=level_1&id=4">level_ title 4</a>
  142. <a href="?cat=level_1&id=5">level_ title 5</a>
  143. </div>
  144. </div>
  145. <div class="level">
  146. <div class="levelTitle">level 2</div>
  147. <div class="level_">
  148. <div class="level_title">level_ title</div>
  149. <a href="?cat=level_2&id=1">level_ title 1</a>
  150. <a href="?cat=level_2&id=2">level_ title 2</a>
  151. <a href="?cat=level_2&id=3">level_ title 3</a>
  152. <a href="?cat=level_2&id=4">level_ title 4</a>
  153. <a href="?cat=level_2&id=5">level_ title 5</a>
  154. </div>
  155. </div>
  156. <div class="level">
  157. <div class="levelTitle">level 3</div>
  158. <div class="level_">
  159. <div class="level_title">level_ title</div>
  160. <a href="?cat=level_3&id=1">level_ title 1</a>
  161. <a href="?cat=level_3&id=2">level_ title 2</a>
  162. <a href="?cat=level_3&id=3">level_ title 3</a>
  163. <a href="?cat=level_3&id=4">level_ title 4</a>
  164. <a href="?cat=level_3&id=5">level_ title 5</a>
  165. </div>
  166. </div>
  167. <div class="level">
  168. <div class="levelTitle">level 4</div>
  169. <div class="level_">
  170. <div class="level_title">level_ title</div>
  171. <a href="?cat=level_4&id=1">level_ title 1</a>
  172. <a href="?cat=level_4&id=2">level_ title 2</a>
  173. <a href="?cat=level_4&id=3">level_ title 3</a>
  174. <a href="?cat=level_4&id=4">level_ title 4</a>
  175. <a href="?cat=level_4&id=5">level_ title 5</a>
  176. </div>
  177. </div>
  178. </div>
  179. </body>
  180. </html>

3. 结论
以上例子可以看出, 如果已经编写出一个可用的CSS弹出菜单例子, 那要编写出弹出位置在其他地方的 CSS 弹出菜单的话, 只须小小修改一下就 OK.
4. 预览
4.1 1.2 兼容 IE, Opera, Firefox 的 CSS 弹出菜单(脚本实现) 的预览

4.2 2.2 兼容 IE, Opera, Firefox 的 CSS 弹出菜单(脚本实现) 的预览