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

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


CSS做不到这一点。CSS仅用于表示。你的选择是:

不要在<a>标签中包含href属性。 使用JavaScript找到该类的锚元素,并相应地删除它们的href或onclick属性。jQuery将帮助您实现这一点(NickF展示了如何做类似的事情,但更好)。


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

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


CSS只能用来改变一些东西的样式。使用纯CSS所能做的最好的事情就是完全隐藏链接。

您真正需要的是一些JavaScript代码。下面是如何使用jQuery库完成您想做的事情。

$('a.current-page').click(function() { return false; });

你可以用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最好的。


从这个解决方案:

(aria-current =“页面”){ pointer-events:没有; 光标:违约; 文字修饰:没有; 颜色:黑色; } <a href=" Link .html" aria-current="page">Link</a> .html

有关浏览器支持,请参见https://caniuse.com/#feat=pointer-events。如果你需要支持ie浏览器,有一个变通办法;请看这个答案。

警告:在CSS中对非svg元素使用指针事件是实验性的。该特性曾经是css3 UI草案规范的一部分,但由于许多悬而未决的问题,已被推迟到css4。


如果你想在表单上只使用HTML/CSS,另一种选择是使用按钮。设置它的样式并设置disabled属性。

如。 http://jsfiddle.net/cFTxH/1/


演示 试试这个

$('html').on('click', 'a.Link', function(event){
    event.preventDefault();
});

您还可以调整另一个元素的大小,使其覆盖链接(使用正确的z-index):这将“吃掉”点击。

(我们偶然发现这一点,因为我们有一个问题,突然不活跃的链接,由于“响应式”设计导致H2覆盖他们时,浏览器窗口的移动大小。)


Bootstrap禁用链接

<a href="#" class="btn btn-primary btn-lg disabled" role="button">Primary link</a>

<a href="#" class="btn btn-default btn-lg disabled" role="button">Link</a>

Bootstrap禁用按钮,但它看起来像链接

<button type="button" class="btn btn-link">Link</button>

试试这个:

<style>
    .btn-disable {
        display: inline-block;
        pointer-events: none;
    }
</style>

我结合了多种方法来提供一些更高级的禁用功能。这里有一个要点,代码如下。

这提供了多个级别的防御,因此标记为禁用的锚实际上是禁用的。

使用这种方法,你可以得到一个锚,你不能:

点击 按TAB键返回 标签将焦点移动到下一个可聚焦的元素 它知道锚是否随后被启用

 

Include this CSS content, as it is the first line of defense. This assumes the selector you use is 'a.disabled'. a.disabled { pointer-events: none; cursor: default; } Next, instantiate this class such as (with optional selector): $ -> new AnchorDisabler() Here is the CoffeeScript class: class AnchorDisabler constructor: (selector = 'a.disabled') -> $(selector).click(@onClick).keyup(@onKeyup).focus(@onFocus) isStillDisabled: (ev) => ### since disabled can be a class or an attribute, and it can be dynamically removed, always recheck on a watched event ### target = $(ev.target) return true if target.hasClass('disabled') return true if target.attr('disabled') is 'disabled' return false onFocus: (ev) => ### if an attempt is made to focus on a disabled element, just move it along to the next focusable one. ### return unless @isStillDisabled(ev) focusables = $(':focusable') return unless focusables current = focusables.index(ev.target) next = (if focusables.eq(current + 1).length then focusables.eq(current + 1) else focusables.eq(0)) next.focus() if next onClick: (ev) => # disabled could be dynamically removed return unless @isStillDisabled(ev) ev.preventDefault() return false onKeyup: (ev) => # 13 is the JavaScript key code for Enter. We are only interested in disabling that, so get out fast code = ev.keyCode or ev.which return unless code is 13 # disabled could be dynamically removed return unless @isStillDisabled(ev) ev.preventDefault() return false


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

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

然后再次启用它,这样做

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

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


.disabled { pointer-events:没有; 光标:违约; 透明度:0.6; } <a href="#" class="disabled">link</a>


你可以使用这个CSS内容:

a.button,button { display: inline-block; padding: 6px 15px; margin: 5px; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid rgba(0, 0, 0, 0); border-radius: 4px; -moz-box-shadow: inset 0 3px 20px 0 #cdcdcd; -webkit-box-shadow: inset 0 3px 20px 0 #cdcdcd; box-shadow: inset 0 3px 20px 0 #cdcdcd; } a[disabled].button,button[disabled] { cursor: not-allowed; opacity: 0.4; pointer-events: none; -webkit-touch-callout: none; } a.button:active:not([disabled]),button:active:not([disabled]) { background-color: transparent !important; color: #2a2a2a !important; outline: 0; -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .5); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .5); } <button disabled="disabled">disabled!</button> <button>click me!</button> <a href="http://royansoft.com" disabled="disabled" class="button">test</a> <a href="http://royansoft.com" class="button">test2</a>


指针事件属性允许控制HTML元素如何 响应鼠标/触摸事件-包括CSS悬停/活动状态, 在JavaScript中点击/点击事件,以及光标是否在 可见。

这不是禁用链接的唯一方法,但这是一个很好的CSS方法,适用于Internet Explorer 10(及更高版本)和所有新浏览器:

.current-page { pointer-events:没有; 颜色:灰色; } <a href="#" class="current-page">该链接被禁用</a> .


如果您希望它只是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()选择器。


Pointer-events:none将禁用该链接:

.disabled {
    pointer-events: none;
}
<a href="#" class="disabled">link</a>

在CSS中可以做到这一点:

.disabled { 光标:违约; pointer-events:没有; 文字修饰:没有; 颜色:黑色; } <a href="https://www.google.com" target="_blank" class="disabled">谷歌</a>

看:

请注意文字装饰:无;颜色:黑色;不是必需的,但它使链接看起来更像纯文本。


<a href="#!">1)链接非定向url</a><br><br> <a href="#!" disabled >2) Link With With disable url</a><br><br>


我使用:

.current-page a:hover {
    pointer-events: none !important;
}

这还不够;在某些浏览器中,它仍然会闪烁着显示链接。

我必须补充一句:

.current-page a {
    cursor: text !important;
}

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

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

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

在HTML上应用下面的类。

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

你也可以试试这个

<style> .btn-disable { pointer-events: none !important; color: currentColor; cursor: not-allowed; opacity: 0.6; text-decoration: none; } </style> <html> <head> <title>NG</title> </head> <style> .btn-disable { pointer-events: none !important; color: currentColor; cursor: not-allowed; opacity: 0.6; text-decoration: none; } </style> <body> <div class="btn-disable"> <input type="button" value="Show"> </div> </body> </html>


身体{ font-family: 'Roboto', sans-serif; 粗细:500; } a.disable { pointer-events:没有; 颜色:黑色; 文字修饰:没有; } 正常< a href = " https://example.com " > < / > <a href="https://example.com" class="disable"> disable </a> .


简单地使用你的标签没有链接,不包括任何链接属性。