指针事件和禁用当前页面链接

Avatar of Chris Coyier
Chris Coyier

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

这是一个由来已久的网页设计标准,即标题区域中的徽标链接到网站的主页。另一个标准是,在显示网站导航时,以某种方式突出显示“当前”页面,如果它出现在导航中。我认为这些都是很棒的标准。徽标链接的事情是如此普遍,以至于如果你用这种方式编码,无论你是否编码,你的用户都可能会自动尝试它。当前导航的事情仅仅是老生常谈,可以帮助用户定位,并让他们对他们在网站层次结构中的当前位置感到满意。

但这里还有一个很好的设计标准:**不要在页面上链接到同一个页面。**

这里有双重目的

  1. 当您看到一个链接时,它看起来像一个链接,它像一个链接一样工作,上面写着“点击这里并被带到其他地方”。如果链接将您带回同一个页面,那就有点奇怪了。
  2. 没有理由重新加载页面,这会浪费服务器资源。

您如何在不进行大量开发工作和更改标记的情况下实现这一点?当然是用 CSS!


来自 快速演示 的“禁用”导航。

这里最大的想法是,您可以使用 CSS 属性 pointer-events 来告诉链接不要像链接一样工作(点击时不执行任何操作)。

主页的正文有一个唯一的 ID

<body id="home">

导航有一个匹配的类名

<nav>
    <ul>
       <li class="home"><a href="#">Home</a></li>
       <li class="about"><a href="#">About</a></li>
       <li class="clients"><a href="#">Clients</a></li>
       <li class="contact"><a href="#">Contact Us</a></li>
    </ul>
</nav>

主页的导航仅在主页上被禁用

#home nav .home > a {
       pointer-events: none;
       cursor: default;
}

哇,太容易了,对吧?这在 Firefox 3.6+、Safari 3+ 和最新的 Chrome 版本(v5+?)中有效。Opera 或 IE 还没有。但是,嘿,对于如此小的开发投资来说,这非常棒。

让此方法起作用的技巧之一是获得一个可以在正文中使用的 ID 或类。如果您对此概念还不太了解,请查看 这篇文章这个视频,了解基本原理。此外,请注意,像 WordPress 这样的 CMS 有一个body_class();函数,它在正文中提供所有您可能需要的类名。

感谢 Ant Gray 提供了这个想法!