是否有一种方法禁用链接使用CSS?

我有一个名为current-page的类,并希望禁用该类的链接,以便在单击它们时不发生任何操作。


当前回答

如果您希望它只是CSS,禁用逻辑应该由CSS定义。

要移动CSS定义中的逻辑,必须使用属性选择器。下面是一些例子:

禁用具有精确href: =的链接

你可以选择禁用包含特定href值的链接,如下所示:

<a href="//website.com/exact/path">Exact path</a>
[href="//website.com/exact/path"]{
  pointer-events: none;
}

禁用包含路径:*=的链接

在这里,任何包含/keyword/in路径的链接都将被禁用:

<a href="//website.com/keyword/in/path">Contains in path</a>
[href*="/keyword/"]{
  pointer-events: none;
}

禁用以:^=开头的链接

[attribute^=value]操作符的目标是以特定值开头的属性。它允许您丢弃网站和根路径。

<a href="//website.com/begins/with/path">Begins with path</a>
[href^="//website.com/begins/with"]{
  pointer-events: none;
}

你甚至可以用它来禁用非https链接。例如:

a:not([href^="https://"]){
  pointer-events: none;
}

禁用以:$=结尾的链接

[attribute$=value]操作符的目标是一个以特定值结尾的属性。丢弃文件扩展名可能很有用。

<a href="/path/to/file.pdf">Link to pdf</a>
[href$=".pdf"]{
  pointer-events: none;
}

或者其他属性

CSS可以针对任何HTML属性。可以是rel、target、data-custom等等……

<a href="#" target="_blank">Blank link</a>
[target=_blank]{
  pointer-events: none;
}

组合属性选择器

您可以链接多个规则。假设你想要禁用所有的外部链接,但不包括那些指向你网站的链接:

a[href*="//"]:not([href*="my-website.com"]) {
    pointer-events: none;
}

或禁用指向特定网站pdf文件的链接:

<a href="//website.com/path/to/file.jpg">Link to image</a>
[href^="//website.com"][href$=".jpg"] {
  color: red;
}

浏览器支持

从Internet Explorer 7开始就支持属性选择器。从ie9开始使用:not()选择器。

其他回答

在HTML上应用下面的类。

.avoid-clicks {
  pointer-events: none;
}

你可以将href属性设置为javascript:void(0):

.disabled { /*禁用链接样式*/ 颜色:黑色; } <a class="disabled" href="javascript:void(0)“链接> < / >

你可以用CSS来做这件事的一种方法是在包装div上设置一个CSS,你设置它消失,其他东西会取代它的位置。

例如:

<div class="disabled">
    <a class="toggleLink" href="wherever">blah</a>
    <span class="toggleLink">blah</span
</div>

使用CSS

.disabled a.toggleLink { display: none; }
span.toggleLink { display: none; }
.disabled span.toggleLink { display: inline; }

要真正关闭a,您必须替换它的click事件或href,如其他人所述。

PS:澄清一下,我认为这是一个相当不整洁的解决方案,对于SEO来说也不是最好的,但我相信它是纯CSS最好的。

我在网上搜索了一下,没有比这更好的了。 基本上,要禁用按钮点击功能,只需使用jQuery添加CSS样式,如下所示:

$("#myLink").css({ 'pointer-events': 'none' });

然后再次启用它,这样做

$("#myLink").css({ 'pointer-events': '' });

在Firefox和Internet Explorer 11上进行了检查,可以正常工作。

另一个技巧是在上面放置一个看不见的元素。这将禁用任何悬停效果以及

.myButton{
    position: absolute;
    display: none;
}

.myButton::after{
    position: absolute;
    content: "";
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
}