![ASP.NET动态网站设计任务教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/757/31729757/b_31729757.jpg)
任务2-10 二级下拉菜单的制作
需求:
当鼠标移到某个一级菜单项之内时,自动显示它的二级下拉菜单;
当鼠标移到某个一级菜单项之外时,自动隐藏它的二级下拉菜单。
一级菜单可以水平排列,也可以垂直排列。
分析:
为了方便控制二级下拉菜单的显示或隐藏,以及显示位置,这里将二级下拉菜单置于一个DIV中,所有的DIV都使用绝对定位。
实现:
第一步,新建文件夹10,在10文件夹中新建一个HTML页面。
第二步,在页面中添加一个用于表示一级菜单的DIV,设置一级菜单DIV的相应样式属性及一级菜单标题文本,代码如清单2-28所示。
清单2-28 一级菜单的DIV
![](https://epubservercos.yuewen.com/09F237/17180253904508906/epubprivate/OEBPS/Images/img00050001.jpg?sign=1739274035-R7h6AWDOE0kFZQ3z8nvgtkLqAwHyvQao-0-55b0b565b922649cec889675894a7e11)
第三步,为使一级菜单具有弹出效果,添加其尺寸样式属性、溢出样式属性和移入移出事件处理代码。在一级菜单的DIV中添加二级下拉菜单的容器,并设置其位置样式属性,代码如清单2-29所示。
清单2-29 一级菜单的DIV与水平二级下拉菜单的DIV
![](https://epubservercos.yuewen.com/09F237/17180253904508906/epubprivate/OEBPS/Images/img00050002.jpg?sign=1739274035-GRVNGKejM9Vr2ooLk5PCE9qPNcdlIpxC-0-cec739b9681330eb908975fe54775ae8)
第四步,在二级下拉菜单的容器中添加二级菜单列表,代码如清单2-30所示。
清单2-30 二级下拉菜单的容器与水平二级菜单列表
![](https://epubservercos.yuewen.com/09F237/17180253904508906/epubprivate/OEBPS/Images/img00050003.jpg?sign=1739274035-1uSUe2i5cbqrUxn10OYkaPgA2vEtwJHL-0-291c35daf9b08571ead56e5edab599eb)
![](https://epubservercos.yuewen.com/09F237/17180253904508906/epubprivate/OEBPS/Images/img00051001.jpg?sign=1739274035-grPSaB7CMCr9FqyJ3QFA68XwEHoy5Zcz-0-4713ff103f71875d95affaa111f8882a)
第五步,为了使一级菜单开始不显示二级菜单,应设置一级菜单的样式属性overflow为hidden。至此,一个二级菜单制作就完成了。
说明
制作水平排列的一级菜单及其对应二级菜单,因为二级菜单在一级菜单下方显示,所以,其容器的属性设置为left:64px和top:0px。
如果要制作一个,只需将二级菜单容器的位置属性修改一个即可。代码如下:
left:0px;top:16px;
绝对定位在定位方面容易理解与操作,但有时位置属性的设置比较复杂。
使用相对定位(相对于当前输出位置),制作菜单最为方便,其中二级菜单容器的top属性为-16px,表示实际位置的高度相对于当前位置上移16px,即与一级菜单标题文本顶端对齐。下面给出相对定位的二级菜单的代码清单2-31供读者参考。
清单2-31 相对定位的二级菜单
![](https://epubservercos.yuewen.com/09F237/17180253904508906/epubprivate/OEBPS/Images/img00051002.jpg?sign=1739274035-qWl2mYETpoZ4ZYfwoeFizmOiKLs9oJc6-0-daf9ff4fe60f24a805ef392129aced21)
![](https://epubservercos.yuewen.com/09F237/17180253904508906/epubprivate/OEBPS/Images/img00052001.jpg?sign=1739274035-iZF2iro4Qsk4Ozww2lyVqi0RTGjKwyGJ-0-c064f6187f3cd1b3a2f321dfe86bb567)