css网页下拉菜单制作方法(1):基本原理
作者:钟钟 来源:天极设计在线 发布时间:2007-02-03 11:39:00
首先看这下面的例子(鼠标移上去):
[提示:你可先修改部分代码,再按运行]
类似这样的仿Windows下拉菜单,在网上是比较常见的,最初出现在微软网站上,之后被大量效仿。 事实上制作这样一个模拟菜单也并不是一件很困难的事,比如上面的例子代码如下:
<XMP style="COLOR: #666666">-------------------------------------------<style type=text/css>td,div { font: normal 12px 宋体; }a { color: #F8F8F8; text-decoration: none; }a:hover { color: #F8F8F8; text-decoration: underline; }</style><div style="background-color:#3366CC;width:68px;text-align:center;padding:3px;border-bottom:1px solid #FFFFFF;z-index:1;"onmouseover="myMenu.style.display='block'"onmouseout="myMenu.style.display='none'"> <div style="position:absolute;width:0px;height:0px;overflow:visible;"> <div id=myMenu style="position:absolute;left:-10px;top:18px;display:none; width:90px;background-color:#3366CC;padding:5px;text-align:left;"> <a href=#none>Link 1</a><br> <a href=#none>Link 2</a><br> <a href=#none>Link 3</a><br> <a>...</a><br> <a href=#none>Link N</a><br> </div> </div> <a href=#none>菜单实例</a></div>-----------------------------------</XMP>
那么下面我们就由浅入深的对这种模拟菜单进行分析讲解。
在讲解之前,有一点需要说明的是:笔者在后面讲解的代码都基于当前的主流浏览器Microsoft Internet Explorer(即我们通常所说的IE)下的。笔者进行调试的浏览器是IE 5.01。另外,这样一个菜单体现的是HTML/CSS/JavaScript的综合应用,这里并不对一些细节进行详细的讲解,所以你至少应该有一点这方面的基础。
基本原理
其实,这个菜单实现的原理简单的说就是:设置页面元素的CSS属性,对其进行定位并设置其是否可见,然后通过激发一定的事件,用JavaScript来动态的改变这些属性。
看下面几个CSS属性:
position:定位类型,取值static/absolute/relative,其代表的含义简单的说即无定位/绝对定位/相对定位;
left:距离左侧的位置(具体的参照物与position的设置有关),单位为px或%;
top:距离顶部的位置(具体的参照物与position的设置有关),单位为px或%。
display:页面元素的显示状态,如取值block表示做为块状元素显示,none则为不显示,还有其他一些取值(如inline等)这里就不做详解。
比如上例中的“div id=myMenu style="position:absolute;left:-10px;top:18px;display:none...”就是使用了这几个属性。
下面我们来看看如何用JavaScript来控制页面元素的CSS属性。
对HTML有一定了解的朋友一定清楚,几乎所有的标记都有一个style属性,通过设置这个属性来设置该标记的CSS属性(即CSS的内联用法)。在JavaScript中,每一个标记都被视为Document对象的一个子对象,而该标记的每一个HTML属性也都是这个对象的属性或子对象,style就是其中一个,通过用JavaScript控制style的属性,就达到了动态改变页面元素CSS属性的目的。如上例中的“onmouseover="myMenu.style.display=’block’"”就是一个很普通的用法,其中myMenu即我们所看到的“菜单”的ID,它原来的display为none,即不显示,当鼠标移上去时,变为block,即块状显示。
另外要提的是:前面只说了如何实现定位、如何动态控制,那么定位的、控制的是什么元素呢?原则上来讲,大部分块状元素(如div、table)都可以,而在IE中,div标记(注意,在一些非IE浏览器中,并不支持div标记)因其使用的灵活性和方便性而做为我们的首选。上例使用的就是div标记。
好啦,基本的过程,上面大致已经说完了,在下一章,我们将看到使用上面提到的技术来实现一个简单的菜单。
延伸阅读:
猜你喜欢
- <!--这是一个主页文件--><html><head><meta http-equiv="
- 今年我们的祖国多灾多难 雪灾的阴影还没散去又发生了地震。让我们用手中的画笔为5.12地震受灾同胞们祈福并号召大家为灾区人民捐款!中国插画网祈
- 任何一位数据库程序员都会有这样的体会:高通信量的数据库驱动程序中,一条糟糕的SQL查询语句可对整个应用程序的运行产生严重的影响,其不仅消耗掉
- 平常我们只听说过ADO等一类ASP对象,但在ASP中还有个鲜为人知的专门SQL Server的ASP访问对象,它就是SQLOLE.SQLSe
- 从CNNIC在2009年的报告中可以看到,超过80%的网民购物之前都要看评论(包括本站、其他站评论),超过80%的网民都比较信任口碑(包括网
- 1. 检查HTML元素是否有拼写错误、是否忘记结束标记 即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一
- 阅读上一篇:垂直栅格与渐进式行距(上) 新问题来也匆匆,去也“冲冲”。距上次发布垂直栅格与渐进式行距(上)发布,已经不知不觉过去了
- CSS重设就是由于各种浏览器解释CSS样式的初始值有所不同,导致设计师在没有定义某个CSS属性时,不同的浏览器会按照自己的默认值来为没有定义
- opendir – 打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir()
- 1、互动流通的活跃度是社区网站的关键,产品设计者大都需要在此猛下药。facebook有利用率最高的minifeed,myspace有“好友的
- <form name="frm"><select name=school onchange="
- YUI3.2.0 的 transition 模块,通过使用 transition:end 事件实现在 transition 完成后执行其他操
- 很早就在这里看到过解决方案,与嗷嗷讨论后发现这个方案还是很可靠的。当然,唯一的缺点就是每一个属性都要去Hack,但我在很多实践中,只用‘修正
- 异步操作数据的方式有两种常见的方式:XMLHttpRequest 和 iframe. 孰优孰劣在此我们不争论,只是想举一个例子说明在获取网片
- 代码如下:<%@LANGUAGE="VBSCRIPT"%> <% option&n
- 这篇文章主要是想说,“引用只能指向具体对象而不能指向引用”//创建变量testArray 并引用数组 ["1&
- 在网上查了部分资料但是发现粘上去的代码都存在问题,无奈只好自己修改了一下,代码如下: 如下代码能正常运行,都是网上查找资料最后拼凑总结出来的
- 国 * 公司安全团队开发出利用赛门铁克数据库安全与审计(SDSA)设备监视数据库的一系列客户化的政策。他们是如何在已有安全策略基础上做优
- 一般一个网站的首页访问量是最大的,如果您的网站的首页打开的非常缓慢,您的客户将会陆续离开你的网站.通常我们把需要经过复杂运算或者查询数据库得
- 1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES W