想象一下常见的场景,一个包含水平菜单的大标题。您希望整个标题区域都可点击作为“主页”按钮,但显然您也需要菜单项可点击。
让我们以这种超级标准的方式编写此 HTML
<ul id="header">
<li><a href="#">Menu Item</a></li>
<li><a href="#">Menu Item</a></li>
<li><a href="#">Menu Item</a></li>
<li><a href="#">Menu Item</a></li>
</ul>
由于无序列表具有唯一的 ID,并且本质上是块级元素,因此我们可以将其拉伸到所需的任何形状,并应用背景图像来创建我们的标题。
ul#header {
height: 238px;
width: 780px;
background: url(images/header.jpg) no-repeat;
list-style-type: none;
}
为了将菜单项推到菜单底部,为列表项应用顶部边距比为无序列表应用填充更安全(愚蠢的 IE 盒模型问题)。
ul#header li a {
display: block;
margin-top: 168px;
width: 130px;
height: 40px;
background-color: red;
color: white;
}
使整个标题可点击的技巧是,在列表元素中添加一个简单的 Javascript。
<ul id="header" onclick="location.href='index.php';" style="cursor: pointer;">
...
</ul>
关于位置的部分显然是使其成为链接的原因,并且那里的内联样式是为了确保光标更改为指针,以便用户知道它是一个链接。这也可以移动到 CSS 中……
就是这样。非常简单的技巧,但我认为我应该分享一下,因为我发现自己一直在这样做,并且它是标题/菜单问题的非常好的语义解决方案。
Jerry Nummi 发布了一条评论,其中包含他针对此相同问题使用 CSS 解决方案完成的示例。感谢 Jerry! 链接失效。
内联 js 很丑陋 :p
您使用相同的 UL 来设置标题图像样式,这很好,节省了一些标记。但我个人从不赞成内联 javascript。尽管如此,这仍然是一项很棒的工作。
我构建了一些在外观和感觉上有些相同但功能不同的东西。
http://www.some1ne.com/d/bigHover/bigHover.htm
选项卡可以轻松地设置为可点击。
我从 2008 年初就开始阅读此博客,直到现在我一直很享受。希望将来我也会喜欢它.. 这是我的第一条评论,我想告诉这篇文章的作者这些信息确实帮助了我。我也在我的博客中实现了这一点。我找了很长时间才找到这个解决方案。
不错。
我试图提供帮助。如果我咄咄逼人或其他什么,请见谅。
不错。有趣的技巧。
它可以完全验证吗?XHTML Strict?
不错的提示。谢谢
除了明显的内联 javascript 之外,我认为这是一个好主意!
我想知道是否有其他方法可以做到这一点???
我快速创建了一个仅使用 CSS 的解决方案。IE 中存在一些问题,因此我不得不使用一个技巧。
http://nummi.org/large_clickable.html
干得好,Jerry!这确实是思考的结果。更好的解决方案,确实。绝对定位的东西可能会有点棘手,尤其是在它是更大布局的一部分时,但我相信可以解决。
我将更新文章以指向您的示例。
不错的提示,非常优雅……谢谢!