问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于css二级菜单显示, 看了一个例子, 鼠标放在一级菜单时候, 二级菜单就显示出来了

发布网友 发布时间:2022-04-06 12:25

我来回答

5个回答

懂视网 时间:2022-04-06 16:46

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

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

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

<ul id="menu">
 <li>
 <a href="http://www.php.cn/">
 菜单一<!--小图--><span><!--大图--></span>
 </a>
 </li>
 <li>
 <a href="http://www.php.cn/">
 菜单二<!--小图--><span><!--大图--></span>
 </a>
 </li>
 <li>
 <a href="http://www.php.cn/">
 菜单三<!--小图--><span><!--大图--></span>
 </a>
 </li>
 <li class="last">
 <a href="http://www.php.cn/">
 菜单四<!--小图--><span><!--大图--></span>
 </a>
 </li>
</ul>

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

* {
 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的位置改为如下代码:

<ul>
 <li><a href="http://www.php.cn/">二级菜单_11</a></li>
 <li><a href="http://www.php.cn/">二级菜单_12</a></li>
</ul>

我们在各游览器看一下,感觉非常乏力。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控制样式的切换。于是结构层改写如下:

<div class="menu">
 <ul>
 <li>
 <a href="http://www.php.cn/">菜单一 </a>
 <ul>
 <li><a href="http://www.php.cn/">二级菜单_11</a></li>
 <li><a href="http://www.php.cn/">二级菜单_12</a></li>
 </ul>
 </li>
 <li>
 <a href="http://www.php.cn/">菜单二</a>
 <ul>
 <li><a href="http://www.php.cn/">二级菜单_21</a></li>
 <li><a href="http://www.php.cn/">二级菜单_22</a></li>
 </ul>
 </li>
 <li>
 //***************略************
 </li>
 <li>
 //***************略************
 </li>
 </ul>
</div>

热心网友 时间:2022-04-06 13:54

写了以下代码希望能理解
<html>
<head>
<title>【hover是鼠标放在a标签上触发事件的css伪类】</title>
<style type="text/css">
/*二级菜单默认隐藏*/
span{visibility:hidden}
/*鼠标触发A标签实现A标签能影响到下面的所有标签【鼠标放到A标签上SPAN标签显示】*/
a:hover span{visibility:visible}
</style>
</head>
<body>
<a>
我是一级菜单
<!--二级菜单默认隐藏-->
<span>我是二级菜单</span>
</a>
</body>
</html>

热心网友 时间:2022-04-06 15:12

visibility:hidden; 表示隐藏这个块
opacity:0; 表示透明度为0 完全透明

热心网友 时间:2022-04-06 16:47

是用 a:hover div{display:block}

热心网友 时间:2022-04-06 18:38

。。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 用英文回答怎么说? 回答英语问题和翻译 “请回答”用英语怎么说? 回答用英语怎么发音用拼音表示 回答的英文读音 回答 用英语怎么说? 问题和回答英语怎么拼 请问这几个“回答”的英文有什么不同? 你好,我想把我的软件总览去掉,和关闭自动更换壁纸? 电脑的&quot;壁纸自动换&quot;怎么卸载那啊? 如何卸载“换壁纸”软件? “自动更换桌面壁纸&quot;如何卸载 请问如何卸掉微软壁纸自动更换软件? 我的电脑不知道怎么自己就装了个壁纸天天换的程序,怎么删除?好像是木马病毒 请问屏保程序怎么卸载掉,还有就是以前设置的壁纸会出现在选择壁纸框中怎么清除 电脑下载了一自动换壁纸的软件.怎么把他删除掉? 这个屏保助手是什么软件带的,怎么卸载? 下了一个软件自动换桌面壁纸,删了之后还是自动换,怎么关掉它 如何卸载壁纸自动换这个软件啊,我是自己装的,那个软件没有自带卸载程序的 如何卸载壁纸自动换软件? 医保卡是不是社保卡吗 社会保障卡就是医保卡吗? 为什么现在微信转发朋友圈小视频是黑的,我发朋友圈的视频就是有图的 谁能看下微信里朋友圈发的黑圈小视频是用什么软件拍摄的? 微信朋友圈里发的两边有黑框小视频是用什么软件拍的 微信朋友圈发的小视频是黑白照的颜色怎么弄的?不是分享在别的网站分享出来的,也是8秒左右的小视频就像 3D打印机用什么软件好? 3D打印机用什么软件画图? 请教,买了3D打印机需要配套哪些软件 3d打印机是用什么软件的 3D打印机用什么软件设计3D模型 女人,眼睛一只大一只小,左眼大,右眼小,据面相学,看看有什么影响,或者祸 ... “龙凤眼”是什么意思? 有关于五官眼睛一大一小的面相信息吗? 眼睛一大一小面相,有什么影响 女人眼睛一大一小面相怎么样 大小眼 面相的男人 面相学 高低眉与大小眼求解 面相眼睛一大一小,眼珠不在眼睛中央是什么运气 眼睛一大一小 面相