如何:使用 YUI Tabs 创建选项卡框

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

tabbed-box-header.jpg

选项卡框如今非常流行。查看 MSNBC 上的“探索”部分,或 Premium News Theme,了解它们如何在博客设置中使用。我认为这是有充分理由的。它允许您在页面中添加更多内容,同时减少杂乱,并吸引访问者与网站互动。此外,它也挺有趣的。

请注意这些“选项卡框”的工作原理。当您点击新选项卡时,它们会立即更改框内的内容——无需从服务器加载。这是因为所有选项卡的内容在页面加载时都会加载,但会隐藏起来,直到点击相应的选项卡。

使用 Yahoo! UI Tab View,创建选项卡框非常简单。以下是操作方法

1. 在页面中包含 Javascript 文件。

...
	<script type="text/javascript" src="//yui.yahooapis.com/2.5.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>
	<script type="text/javascript" src="//yui.yahooapis.com/2.5.0/build/element/element-beta-min.js"></script>
	<script type="text/javascript" src="//yui.yahooapis.com/2.5.0/build/connection/connection-min.js"></script>
	<script type="text/javascript" src="//yui.yahooapis.com/2.5.0/build/tabview/tabview-min.js"></script>
</head>

<body>
	<script type="text/javascript">
	var myTabs = new YAHOO.widget.TabView("content-explorer");
	</script>
...

2. 添加框的标记。

<div id="content-explorer">
			
	<ul class="yui-nav">
		<li class="selected"><a href="#">Articles</a></li>
		<li><a href="#">Photos</a></li>
		<li><a href="#">Video</a></li>
		<li><a href="#">Leprechaun</a></li>
	</ul>

	<div class="yui-content">
		<div>
			...
		</div>
		<div>
			...
		</div>
		<div>
			...
		</div>
		<div>
			...
		</div>
		<div>
			...
		</div>
	</div>
</div>

此标记中的所有内容对于使其工作都很重要,包括所有元素的 ID 和类名。请注意,“yui-nav”中有四个列表项,“yui-content”中有四个 div,这一点也很重要。这些应该始终相等对应。

3. 使用 CSS 样式化

#content-explorer {
	padding-top: 20px;
	width:100%;
	line-height:normal;
	}
	#content-explorer ul {
		padding: 10px 10px 0;
		list-style: none;
		max-width: 770px;
		background: url(images/menu_bg.gif) bottom repeat-x;
		height: 31px;
		}
		#content-explorer ul li {
			float: left;
			background: url(images/right.gif) right top no-repeat;
			text-align: center;
			overflow: hidden;
			margin-left: 5px;
			}
			#content-explorer ul li a {
				display: block;
				background: url(images/left.gif) left top no-repeat;
				padding: 10px 20px 6px 20px;
				font-weight: bold;
				color: #999;
			}
			#content-explorer ul li a:hover {
				color: #990000;
			}
			#content-explorer ul li.selected {
				background: url(images/right_cur.gif) right top no-repeat;
			}
			#content-explorer ul li.selected a {
				background: url(images/left_cur.gif) left top no-repeat;
				padding-bottom: 8px;
				color: #990000;
			}
div.yui-content {
	overflow: auto;
	border-bottom: 2px solid black;
	border-right: 2px solid black;
	border-left: 2px solid black;
	padding: 20px;
}

CSS 完全由您决定,没有像标记中那样的命名限制。不要担心在其中设置 display 值以隐藏不同选项卡的内容,Javascript 会自动为您执行此操作。

对我来说,真正酷的部分在于所有这些都非常灵活。您可以在内容区域的这些 div 中做任何您能想到的事情。

示例页面

下载示例