CSS多级菜单的实例代码讲解

本篇文章给大家带来的内容是关于css多级菜单的实例代码讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

这是一个相当炫的功能,让网页看起来像桌面程序,如window的开始菜单。实现原理基本和纯CSS相册差不多,但要注意的事项比较多,让我们一步步来吧。

先来一个非常简单的一级菜单与悬停效果。

结构很熟悉吧,就是把原来放图片的地方换成文字而已。我还特意标出来了。接着下来的表现层代码非常简单。

* {  margin:0;  padding:0;}.menu {  font-size:12px;}.menu li {/*水平菜单*/  float:left;  list-style:none;}.menu a {  display:block;  position:relative;  height:32px;  width:100px;  line-height:32px;  background:#a9ea00;  color:#ff8040;  text-decoration:none;  text-align:center;}.menu a:hover {  background:#369;  color:#fff;}.menu li span {  display:none;  position:absolute;  left:0;  top:32px;  width:200px;  height:150px;  background:#B9D6FF;}.menu a:hover span {  display:block;}

这里有两个值得注意的地方。我们先说第一个。子菜单(span元素)的top应该能使其顶部停留在a元素的范围内,如果包含块是li元素,同理。当span的top值大于32px,如40px,我们就无法把鼠标移到span元素上。因为离开了a:hover的作用范围,span元素又重新隐藏。

立即学习“前端免费学习笔记(深入)”;

.menu li span {  display:none;  position:absolute;  left:0;  top:40px;/*★★修改这里★★*/  width:200px;  height:150px;  background:#B9D6FF;}

第二个问题是IE6特有的,就是子菜单在对应的包含块mouseout后仍不消失的问题。hover伪类相当于moverover与moverout。我们在可以在mouseover给它的子孙元素认定一种样式,mouseout时认定另一种。换言之,display现在在IE6无法切换(img元素除外)。解决方法用visibility 代替display。

好了,现在我们真正做二级菜单,把有关span的CSS全删掉,并在结构层原span的位置改为如下代码:

我们在各游览器看一下,感觉非常乏力。IE6与Opera10的二级菜单项是垂直的,但我们并没有清除浮动啊?firefox3.5与chrome与safari4的二级菜单项是水平分布了,但上面好像多出一个菜单项……IE8同学这次反而是表现得最好的。我没有装IE7,所以一向忽略它。

我们重新设置一下样式,如把包含块改设在li元素上,让二级菜单项呈垂直显示。

* {  margin:0;  padding:0;}.menu {  font-size:12px;}.menu li {/*水平菜单*/  float:left;  list-style:none;  position:relative;/*把包含块移动li元素*/}.menu a {  display:block;  /*position:relative;发现放在a元素中,  在标准游览器中惨不忍睹,  和纯CSS相册3的第一个运行框在chrome中遇到的bug一样*/  height:32px;  width:100px;  line-height:32px;  background:#a9ea00;  color:#ff8040;  text-decoration:none;  text-align:center;}.menu a:hover {  background:#369;  color:#fff;}/*新增的二级菜单部分*/.menu ul ul {  visibility:hidden;/*开始时是隐藏的*/  position:absolute;  left:0px;  top:32px;}.menu ul a:hover ul{  visibility:visible;}.menu ul ul li {  clear:both;/*垂直显示*/  text-align:left;}

发现二级菜单在firefox与safari与chrome中没有反应,弹不出来(这三个浏览器的CSS部分互相抄袭严重啊)。opera10表现得最好,IE8其次。不过,标准浏览器的所有元素都支持hover伪类,不像IE6,非带href的a元素不可。我们改写部分CSS代码:

.menu ul li:hover ul,/*非IE6*/.menu ul a:hover ul{/*IE6*/  visibility:visible;}

二级菜单能弹出来了,但那个神秘的li元素也现形了。我用双重浮动的收缩包围(shrink-wrapping)现象都无法消除这个神秘的li元素。参考外国的代码,方法是,把整个子菜单放到a元素的外面,然后用li:hover控制样式的切换。于是结构层改写如下:

以上就是CSS多级菜单的实例代码讲解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1613377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 03:34:24
下一篇 2025年12月24日 03:34:36

相关推荐

  • CSS实现柱形图效果的代码示例

    本篇文章给大家带来的内容是关于css实现柱形图效果的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 CSS在处理排版之强大,没有做不到,只有想不到。下面我们将一同实现一个柱状图。 先打好一个具体的框架。我们利用无序列表做整体,里面的东西我们根本选择内联无素span,stro…

    2025年12月24日 好文分享
    000
  • CSS如何实现未知高度图像的垂直居中(附代码)

    本篇文章给大家带来的内容是关于css如何实现未知高度图像的垂直居中(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 CSS垂直居中 .container{ width:500px;/*装饰*/ height:500px; background:#B9D6FF; border…

    2025年12月24日
    000
  • css实现文本两端对齐的代码实例讲解

    本篇文章给大家带来的内容是关于css实现文本两端对齐的代码实例讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在做表单时我们经常遇到让上下两个字段对齐的情况,比如姓名, 手机号码, 出生地。这样我们就要用到 text-align, text-justify样式了。 text-a…

    好文分享 2025年12月24日
    000
  • 多行文本进行截断的奇淫巧技

    本篇文章给大家带来的内容是关于多行文本进行截断的奇淫巧技,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 单行文字的截断非常简单,但是多行文字的截断可谓是非常头疼,刚学css时候就为了这个写了很多乱七八糟的代码,今天工作又遇到了这个需求…比较巧的是某公众号今天正好也推送了…

    2025年12月24日 好文分享
    000
  • CSS 、JS实现浪漫流星雨动画

    本篇文章给大家带来的内容是关于css 、js实现浪漫流星雨动画,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。效果如下: HTML 由于节点很多,并且我想尽量做得逼真有趣有点,还给节点加了随机位置。所以节点的输出都是用JS控制的,HTML这边只写了几个父元素盒子,加上相应的ID名和类…

    2025年12月24日
    000
  • 盒模型与BFC的深入讲解

    本篇文章给大家分享的内容是关于盒模型以及BFC,有需要的朋友可以参考一下,希望可以帮助到有需要的朋友 标准盒模型与IE盒模型 开发者们都知道,由于历史遗留问题与既定标准的发展,存在着两个css盒模型。即W3C的标准盒模型以及IE的怪异盒模型。在css中,可以用box-sizing去定义元素的盒模型。…

    2025年12月24日 好文分享
    000
  • css中定位的简单介绍(代码示例)

    本篇文章给大家带来的内容是关于css中定位的简单介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、相对定位 position: relative 相对默认的布局位置进行定位,也就是相对自己应该在的位置来定位。 .avatar { top: 3px; //从上到下偏…

    2025年12月24日 好文分享
    000
  • CSS+JS如何实现浪漫流星雨动画效果?(代码示例)

    本篇文章给大家带来的内容是介绍css+js如何实现浪漫流星雨动画效果?(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 首先我们来看看效果图: 下面我们来看看如何实现: HTML代码: CSS代码: 立即学习“前端免费学习笔记(深入)”; /* – – – – – – …

    2025年12月24日
    000
  • CSS修改placeholder样式的方法介绍(代码示例)

    本篇文章给大家带来的内容是css修改placeholder样式的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 项目用经常遇到修改input的placeholder的颜色的需求,这里来看一下placeholder如何用css设置: 首先来看一下chrome默认的input…

    2025年12月24日 好文分享
    000
  • 纯CSS如何实现表头固定?表头固定的实现

    本篇文章给大家带来的内容是介绍纯css如何实现表头固定?表头固定的实现。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 纯CSS实现表头固定之所以难,主要在两点: 1、占有最大市场份额的IE6不支持position:fixed。 2、人们想破头都想在一起表格中实现这种效果。 不过外…

    好文分享 2025年12月24日
    000
  • 纯CSS如何实现柱形图效果?(代码示例)

    本篇文章给大家带来的内容是介绍如何用纯css实现柱形图效果?(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 我们都知道,CSS在处理排版之强大,没有做不到,只有想不到。下面我们将一同实现一个柱状图。 先打好一个具体的框架。我们利用无序列表做整体,里面的东西我们根本选择…

    2025年12月24日 好文分享
    000
  • CSS如何绘制一只萌萌哒的大熊猫?(代码示例)

    本篇文章给大家带来的内容是介绍css绘制一只萌萌哒的大熊猫的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 黑眼圈的大熊猫可谓非常可爱,今天就用CSS实现以下萌萌哒的大熊猫一枚(效果如下): 代码在这儿:https://codepen.io/woshilyy/p……

    2025年12月24日
    000
  • CSS3如何实现聊天气泡效果?(代码示例)

    本篇文章给大家带来的内容是介绍css3巧妙实现聊天气泡效果的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 前一阵子敢玩的 Mobile 页改版完成了,就之前的页面风格更加扁平化,从暗色系为主背景转到亮色背景,去掉更多的阴影,给用户简约的体验风格,哈哈我不是设计师不过多评价啦…

    2025年12月24日 好文分享
    000
  • ::before有什么作用?::before与:before的区别是什么?

    ::before是什么?有什么作用?本篇文章就给大家::before有什么用,让大家了解::before的简单使用,以及::before与:before的异同点。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 一、::before是什么?有什么作用? 在css中,::before …

    2025年12月24日
    000
  • CSS打印时更改屏幕设计和样式(代码示例)

    本篇文章我们将介绍在打印过程中使用css更改屏幕设计和样式的代码,要在印刷时改变样式,可以在文件中进行样式表的链接的link标签指定media属性,或者在css文件中使用媒体查询。 使用链接标记指定媒体属性时 代码 这是使用链接标记指定media属性的代码。 index.html 立即学习“前端免费…

    2025年12月24日
    200
  • css如何实现图片的旋转展示效果(代码示例)

    本篇文章给大家带来内容是通过代码示例介绍使用css+js实现图片的旋转展示,制作一个手动操作的“无限”照片轮播图。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 下面我们就开始介绍如何实现效果。 1、构建图像轮播框架 首先是HTML。它有点难以阅读,因为我们删除了元素之间的任何空格…

    2025年12月24日
    000
  • 浅谈pointer-events属性是什么?pointer-events属性的使用

    本篇文章给大家带来的内容是浅谈pointer-events属性是什么?pointer-events属性的使用,让大家了解pointer-events属性的相关知识。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 首先我们来了解一下pointer-events属性是什么? point…

    2025年12月24日
    000
  • 详解pointer-events属性的使用(代码示例)

    本篇文章给大家带来的内容是详解pointer-events属性的使用(代码示例),让大家了解pointer-events属性可以做什么,有什么效果。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 在之前的文章【浅谈pointer-events属性是什么?pointer-events…

    2025年12月24日
    000
  • 通过CSS定位操作的动态元素大小

    这篇文章给大家介绍的是关于通过css定位操作的动态元素大小的内容,有感兴趣的朋友可以看一看,话不多说,我们直接看来看具体的内容。 不使用宽度和高度或JS给体积提供元素的小技巧。 这是一个很简单的技巧,但是很多人不知道。(推荐教程:CSS视频教程) 假设你想制作一个包含每个屏幕100px以外的所有屏幕…

    好文分享 2025年12月24日
    000
  • 如何实现一个特殊的单面css框效果(代码实例)

    随着css3的发展,网络开发的进步已经走向了完美的想象。对于文本和其他用法,css drop-shadow可以实现一个好看的效果框,我们直接来看具体的代码。 这是html部分: Some example text CSS代码 #beauty-boxes{ transition: all 0.5s e…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信