首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页制作心得技巧

[推荐]利用HTML制作水平下拉菜单

来源: 互联网    日期:2006-4-21
 
曾经我们千篇一律的,用大量的脚本写一个下拉菜单,现在我们用html来写结构,用css来做外观,做出既美观又易于编辑和更新的下拉菜单,而且能适应各种浏览器。

在开始讲解之前先看一下 预览

创建菜单
首先创建我们菜单最重要的部分--它的结构。最好的方法是创建一个无序列表,让每个子菜单作为父级列表项中一个列表出现。听起来很复杂吧,其实很简单:)。

程序代码: [ 复制代码到剪贴板 ]


<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a>
<ul>
<li><a href="#">History</a></li>
<li><a href="#">Team</a></li>
<li><a href="#">Offices</a></li>
</ul>
</li>
<li><a href="#">Services</a>
<ul>
<li><a href="#">Web Design</a></li>
<li><a href="#">Internet
Marketing</a></li>
<li><a href="#">Hosting</a></li>
<li><a href="#">Domain Names</a></li>
<li><a href="#">Broadband</a></li>
</ul>
</li>
<li><a href="#">Contact Us</a>
<ul>
<li><a href="#">United Kingdom</a></li>
<li><a href="#">France</a></li>
<li><a href="#">USA</a></li>
<li><a href="#">Australia</a></li>
</ul>
</li>
</ul>

这些是简单的很容易理解和编辑的html。

视觉上吸引人吗?
假如你上面看过预览了,让我们来加上一些样式。

第一步便是取消无序列表的默认样式和定义我们的菜单项的宽度。

程序代码: [ 复制代码到剪贴板 ]


ul {
  margin: 0;
  padding: 0;
  list-style: none;
  width: 150px;
  }

接下来,我们要定位我们的列表项,庆幸的是,默认的已是这种垂直堆叠效果,尽管如此,我们仍需将"position"设置成"relative",以便子菜单能够利用它们。

程序代码: [ 复制代码到剪贴板 ]

ul li {
  position: relative;
  }

下一步便是设置子菜单了,当鼠标移上某个父级菜单项时,它的子菜单正确的出现在它的右边,这是我们想要的效果。

程序代码: [ 复制代码到剪贴板 ]

li ul {
  position: absolute;
  left: 149px;
  top: 0;
  display: none;
  }

使用"left"和"top"属性,我们能绝对定位每个菜单项的子菜单。你会注意到我把"left"的属性值设为149px(比菜单项少1px),这是为了避免主菜单和子菜单之间交迭时产生两条边框(你在后面会弄懂我的意思)。

我们同时设置"display"为"none",我们不想让子菜单默认是看得见的。

那么现在我们有了 一个框架 ,但是它看起来有点简单,让我们来定义一下那些链接的样式。

程序代码: [ 复制代码到剪贴板 ]

ul li a {
  display: block;
  text-decoration: none;
  color: #777;
  background: #fff;
  padding: 5px;
  border: 1px solid #ccc;
  border-bottom: 0;
  }

我已经做好了我的链接样式,只要你愿意,你也可以把它修改成你喜欢的样子。

把"display"设成"block"这条定义很重要,这样可以让链接占据整个列表项。

现在 我们的菜单 看起来好多了,尽管IE下的用户不会这么认为,因为很遗憾的是,在IE架构下,两个列表项之间会有空白,你会发现在IE下面,两个列表项无法接合在一起,尽管如此,我们还是有办法对付这个Bug。

程序代码: [ 复制代码到剪贴板 ]

/* Fix IE. Hide from IE Mac */
* html ul li { float: left; }
* html ul li a { height: 1%; }
/* End */

我们可以应用上面的样式,这个样式可以在IE中运行,而不在其它浏览器运行,很棒吧?你会发现我们定义了链接的"height"值为"1%"。但很遗憾(很汗的说-_-!)的是,我们定义的"float"属性,却暴露了IE别一个Bug!就是在让链接块状显示时,必须给它定义高度值。

你也会注意到我们菜单的底部没有合上,下面还缺一个边框线,如下所示,我们定义"UL"来合上它。

程序代码: [ 复制代码到剪贴板 ]

ul {
  margin: 0;
  padding: 0;
  list-style: none;
  width: 150px;
  border-bottom: 1px solid #ccc;
  }

还算走运,现在我们可以看到 未加事件的版本 了。

现在是时候让那些子菜单开始工作了,让它们出现在我们移动鼠标到菜单上面的时候。

程序代码: [ 复制代码到剪贴板 ]

li:hover ul { display: block; }

瞧…!现在它们在工作了!

“哇噻!它工作了!”--我接收到来自你百分之一的嚎叫声!叫的好恐怖哦!

好啦,言归正传,在IE下边,我们无法看到上面的效果,因为IE还不支持"hover"这种伪类。

一点点JavaScript可以让IE实现这种效果。

程序代码: [ 复制代码到剪贴板 ]
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace»
  (" over", "");
}
}
}
}
}
window.onload=startList;

万分感谢Patrick Griffiths和Dan Webb提供的js程序,谢谢了,伙计!

现在,"hover"属性值将变成:

程序代码: [ 复制代码到剪贴板 ]

li:hover ul, li.over ul {
  display: block; }

另外,为让我们的主"ul"应用JavaScript,把它变成:

程序代码: [ 复制代码到剪贴板 ]

<ul id="nav">

现在我们再来看一下 效果 吧!

IE5.01 的Bug解决如下:

程序代码: [ 复制代码到剪贴板 ]

/* Fix IE. Hide from IE Mac */
* html ul li { float: left; height: 1%; }
* html ul li a { height: 1%; }
/* End */

最后做一个你自己的吧,这有一个给"Hover"属性 另外加上样式的效果 ,你可以发挥你的想象,做一些其它样式的。



更多的[推荐]利用HTML制作水平下拉菜单请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2006-4-21   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报