我正在尝试禁用特定链接并应用光标样式,但是此CSS命令cursor: text;
无效。光标始终是默认值。我正在使用最新的Firefox版本。
CSS:
pointer-events: none !important;
cursor: text;
color: Blue;
Answers:
使用pointer-events: none
将禁用所有与该元素的鼠标交互。如果要更改cursor
属性,则必须将更改应用于父元素。您可以使用元素包装链接并将cursor
属性添加到其中。
的HTML
<span class="wrapper">
<a href="#">Some Link</a>
</span>
的CSS
.wrapper {
position: relative;
cursor: text; /* This is used */
}
.wrapper a {
pointer-events: none;
}
但是,存在一些浏览器不一致的地方。要使此功能在IE11中起作用,似乎您需要一个伪元素。伪元素还允许您选择FF中的文本。奇怪的是,您可以在没有Chrome的情况下选择Chrome中的文本。
.wrapper:after {
content: '';
position: absolute;
width: 100%; height: 100%;
top: 0; left: 0;
}
自原始问题以来已经很久了,但这是我的解决方案,没有任何包装元素和没有指针事件的游标:
<!-- Add tabindex="-1" so that element cannot be reached by keyboard -->
<a href="url" class="disabled" tabindex="-1" onfocus="this.blur()">Disabled link</a>
CSS:
/* Adding cursor just works: */
.disabled {
cursor: not-allowed;
}
/* Makes link non-clickable: */
.disabled:active {
pointer-events: none;
}
编辑:
onfocus="this.blur()"
元素设置为散焦。通过指定,pointer-events:none
您正在积极地声明元素和光标之间没有鼠标交互。因此,它也不能有光标-所有鼠标行为都不可见。
删除pointer-events: none !important;
。使用JavaScript禁用链接:
anchorElement.onclick = function(){
return false;
}
如果您不知道JavaScriptanchorElement
是节点或元素本身。获取元素的最常见方法是使用HTMLid
属性。假设我们有:
<a id='whatever' href='#'>Text Here</a>
您的代码可能是:
document.getElementById('whatever').onclick = function(){
return false;
}
还有许多其他获取节点的方法。
我的用例是一个可拖动元素,它不能有任何指针事件或任何带有指针事件的父元素。
我通过有条件地应用全局样式(仅在拖动时才强制抓住光标)解决了该问题。(我使用React和样式化组件,但是相同的逻辑可以应用于vanilla js)。
const SetDraggingCursor = createGlobalStyle`
* {
cursor: grabbing !important;
}
`;
// ...
{isDragging && <SetDraggingCursor />}