[CSS+JS]同一页面可以重复使用的选项卡(2)

作者:豆豆猫 来源:豆豆猫的窝 时间:2009-02-12 12:53:00 

如此定义的好处是,选项卡的选项和其内容是关联的,当没有加载CSS的时候,其显示如图2所示。

无CSS时选项卡的显示结构也很清晰

其中第一层的<li>的类名“tabOption”是标示这个<li>是选项,以却别内容里的<li>,类名“tabOn”则表示这个选项卡是打开的(即鼠标的:hover状态)。“<div class=”tabContentBox”>”为放置选项卡具体内容的层,通过CSS控制其显示或隐藏,关键的CSS为:

.tabList .tabContentBox {
width: 390px;
height:130px;
border:1px solid #069;
text-align: left;
overflow: hidden;
background: #fff;
position: absolute;
top: 22px;
left: 0;
display: none;
margin:4px;
}

先设定内容层为“display: none”,即不显示,则浏览器会忽略此元素和其子孙元素,元素也不占位。然后对于“tabOption”的:hover设定CSS如下:

.tabList .tabOption:hover .tabContentBox,
.tabList .tabOn .tabContentBox {
display: block;
}

此时,在IE 7/8、Firefox 3.0等浏览器内,已经可以实现指向选项卡时显示相应内容的效果。但是,由于IE 6只支持链接<a>元素的:hover伪类,因此还需要JavaScript来兼容IE 6,同时,“:hover”状态当鼠标移出选项的时候就消失了,因此不便于浏览,所以也需要JavaScript来控制,设定当鼠标指向某个选项时,此选项的内容一直显示,即增加“tabOn”。JavaScript代码如下:


<script type="text/javascript" language="javascript"><!--window.onload = tabEffect;function tabEffect(){ var allElements = document.getElementsByTagName('*'); for (var i=0; i<allElements.length; i++) {  if (allElements[i].className.indexOf('tabOption') >= 0)  {   allElements[i].onmouseover = mouseOver;  } }}function mouseOver(){    tabList = this.parentNode;    tabOptions = tabList.getElementsByTagName("li"); for (var i=0; i<tabOptions.length; i++) {     if (tabOptions[i].className.indexOf('tabOption') >= 0)  {      tabOptions[i].className = "tabOption";  } } this.className += " tabOn";}--></script>

至此,选项卡制作完毕,此方法与其他方法不同的地方是,可以在页面内不同位置放置多个选项卡也不会冲突,同时只需要此一段JavaScript程序即可。

标签:Ajax,JavaScript,滑动门,选项卡
0
投稿

猜你喜欢

  • Mysql数据库的完全备份

    2011-08-05 18:46:25
  • MySQL乱码问题深层分析

    2009-03-09 14:53:00
  • 人性化网页设计技巧

    2007-10-15 13:02:00
  • CSS应用的必要步骤:样式重设

    2008-06-11 13:29:00
  • 日文片假名导致 Access 搜索“内存溢出”

    2009-07-07 22:23:00
  • asp如何在线查询本地机的文件?

    2010-06-22 21:19:00
  • Dreamweaver初学者常见问题解答

    2007-02-03 11:39:00
  • javascript 动态插入技术

    2009-12-14 20:50:00
  • asp文章干扰码实现方法

    2007-08-19 18:07:00
  • 细化解析:SQL Server数据库的集群设计

    2009-02-05 15:59:00
  • ADO组件之插入数据记录

    2008-10-08 12:21:00
  • sqlserver bcp(数据导入导出工具)一般用法与命令详解

    2012-07-11 15:56:39
  • 开发保留标准的浏览器功能的AJAX应用

    2008-02-03 14:03:00
  • 连接无法用于执行此操作。在此上下文中它可能已被关闭或无效

    2011-03-15 23:03:00
  • 十几行的超简日历组件(兼容FF)js源码

    2010-08-08 08:49:00
  • SQL Server 作业的备份(备份作业非备份数据库)

    2012-07-11 15:58:49
  • 别人复制你网站的文章时自动加上注释

    2009-02-09 13:20:00
  • 轻松处理Dreamweaver段落缩进

    2007-11-17 07:53:00
  • asp access数据库并生成XML文件范例

    2011-03-29 10:49:00
  • 也说说语义

    2009-12-29 13:04:00
  • asp之家 网络编程 m.aspxhome.com