二级菜单HTML原理,CSS多级菜单的实例代码讲解

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

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

菜单一

菜单二

菜单三

菜单四

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

*{

margin:0;

padding:0;

}

.menu{

font-size:12px;

}

.menuli{/*水平菜单*/

float:left;

list-style:none;

}

.menua{

display:block;

position:relative;

height:32px;

width:100px;

line-height:32px;

background:#a9ea00;

color:#ff8040;

text-decoration:none;

text-align:center;

}

.menua:hover{

background:#369;

color:#fff;

}

.menulispan{

display:none;

position:absolute;

left:0;

top:32px;

width:200px;

height:150px;

background:#B9D6FF;

}

.menua:hoverspan{

display:block;

}

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

.menulispan{

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

  • 二级菜单_11
  • 二级菜单_12

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

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

*{

margin:0;

padding:0;

}

.menu{

font-size:12px;

}

.menuli{/*水平菜单*/

float:left;

list-style:none;

position:relative;/*把包含块移动li元素*/

}

.menua{

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;

}

.menua:hover{

background:#369;

color:#fff;

}

/*新增的二级菜单部分*/

.menuulul{

visibility:hidden;/*开始时是隐藏的*/

position:absolute;

left:0px;

top:32px;

}

.menuula:hoverul{

visibility:visible;

}

.menuululli{

clear:both;/*垂直显示*/

text-align:left;

}

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

.menuulli:hoverul,/*非IE6*/

.menuula:hoverul{/*IE6*/

visibility:visible;

}

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

  • 菜单一

    • 二级菜单_11
    • 二级菜单_12
  • 菜单二

    • 二级菜单_21
    • 二级菜单_22
  • //***************略************

  • //***************略************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML对字体的操作详解

摘自:HTML对字体的所有操作详解(经典) 作者:HeroKern 发布时间: 2016-01-31 21:15:31 网址:https://blog.csdn.net/qq_21792169/article/details/50615919/?utm_termhtml%E6%A0%87%E8%AE%B0%E5%AD%97%E4%B…

Discuz初探

根目录文件 admin.php 后台入口文件 api.php 合作API输出 archiver 论坛Archiver阅读模式(无图版) connect.php 云平台接口文件 cp.php 多应用服务入口文件(加载userapp.php) crossdomain.xml fa…

数学学习笔记-三角函数

1.圆的一周的弧度数为2π,360角2π弧度,1为π/180弧度 2.如下图,在一个直角三角形中 角A的对边为正对着的那个边a角A的邻边为另外一条直角边b角A的斜边为斜边c其中 正弦sin(A)对边/斜边余弦cos(A)邻边/斜边正切tan(A)对边/邻边正割csc(A)1/si…

云计算呼叫中心_SaaS云呼叫中心系统只用于销售或客服?

随着时代的发展,公司企业不一定有规模了才需要呼叫中心系统。SaaS云部署方式呼叫中心系统的出现,已经能够满足所有公司的需要,成本低、功能完善、效率高。公司电话管理系统通常大家的理解是,呼叫中心只是应用于针对营销部门或是客…

全国计算机等级考试题库二级C操作题100套(第91套)

第91套: 函数fun的功能是:计算请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序…

mvc4 html.pager,MVC分页之MvcPager使用详解

最近刚刚接触MVC不久,因项目中要用到分页,网上找了下资料,最后采用了MvcPager(http://www.webdiyer.com/),支持同步和Ajax异步分页。废话不多说了直接上代码。一.MvcPager异步 ViewModel:public class Article{[Display(Name "信息编号…

lnmp压力测试

最近在自己的台式机上搭了个lnmp,想用压力压一压,看看结果怎么样。由于nginx只是个静态web服务器,并发能力超强,因此lnmp的性能瓶颈在于php的处理能力,即php-fpm。硬件CPU AMD Phenom(tm) II X4 945内存 4G x 4硬盘 西…

1 uC/OS工程目录

第一个项目,从整体上认识 uC/OS转载于:https://www.cnblogs.com/chdfelix/p/9581271.html

html中免费的四级联动,利用JS实现省市区街道四级联动插件

特效描述:利用JS实现 省市区街道 四级联动插件。利用JS实现省市区街道四级联动插件代码结构1. 引入CSS2. 引入JS3. HTML代码所在地区所在地区请选择请选择请选择请选择$(function(){// 地址选择器遮罩层打开与关闭$("#areaLabel").click(function(e){$(&q…

python递归面试题_汉诺塔问题其实很简单 Python 递归经典面试题

话不多说,上代码1 def hanoi_move(n, source, dest, intermediate):2 if n > 1: # 递归出口,只剩一个盘子3 hanoi_move(n-1, source, intermediate, dest)4 print("Move %s -> %s" % (source, dest))5 hanoi_move(n-1, intermediate, de…

全国计算机等级考试题库二级C操作题100套(第92套)

第92套: 函数fun的功能是:计算的前n项。若x2.5,函数值为:12.182340。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或…

原生希望原生JavaScript开篇

本篇文章个人在深圳游玩的时候突然想到的...最近就有想写几篇关于原生希望的文章,所以回家到之后就奋笔疾书的写出来发布了 一直对前端技巧很有兴致,就心生了写一个专栏的动机,然后就申请了原生JavaScript这个专栏,旨在与大家同共…

POJ 1836 Alignment

有一排人,身高可能不同,现在有一个理想状态是这排的每个人向左或向右看没有被挡住视野(当遇到等高或更高的人时会被挡住),现在问最少让几人出列可以达到这个理想状态。 最少人出列,其实就是一个人数最多的理想状态。求一个人数最多…

2021年广西高考成绩查询方法,2021年广西高考成绩查询网站查分网址:https://www.gxeea.cn/...

【摘要】高考结束后大家最为关心的问题就是在哪里查分,如何查分,高考频道特别整理2021年广西高考成绩查询查分网址,成绩公布时考生可直接点击网址进行查分,预祝大家都能顺利的考上理想的大学!由于,各省级招…

ppt倒计时_年终会议做一个这样的倒计时PPT,保证惊艳全场!1分钟就能学会

倒计时动画很经常被用在一些产品的发布会或是新年晚会的现场,因为倒计时可以营造除以中紧张的氛围~那么我们常见的倒计时动画都是怎么做出来的呢?其实一点也不难,不需要任何专业的视频软件,只要用我们日常工作中最常用的PPT就能做…

全国计算机等级考试题库二级C操作题100套(第93套)

第93套: 给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun 函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表 缩短。 请在程序的下划线处填入正确的内容并把下划线删除,使程…

修改Advance Template Jsp模板的编码格式

2019独角兽企业重金招聘Python工程师标准>>> windows ——》 preferences ——》MyEclipse——》Files and Editers——》JSP 在此widzard中修改相应的编码。 转载于:https://my.oschina.net/wangfree/blog/127313

ASP.NET Core ---日志

一、日志记录: 1、日志的作用: 程序中记录日志一般有两个目的,故障定位和显示程序运行状态。好的日志记录方式可以提供足够多定位问题的依据。 2、日志的等级: 有良好工作习惯的人,工作的时候会将领导交待下来的工作分…

2021年慈溪横河中学高考成绩查询,慈溪中学

2013浙江慈溪中考分数线公布2013年慈溪市中考成绩揭晓,从慈溪市教育局获悉,今年慈溪市普高投档控制线为485.5;慈溪中学统招线为565。昨天,公办普高第一批次录取分数线同时划定:浒山中学541.5,龙山中学485.5&#xff0c…

circle函数用法 turtle_Python绘图库Turtle详细分析

关注Python学习交流学习更多Python知识Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动&am…