Я намагаюся відключити конкретне посилання та застосувати стиль курсору, але ця команда CSS cursor: text;не вплине. Курсор завжди є типовим. Я використовую останню версію Firefox.
CSS:
pointer-events: none !important;
cursor: text;
color: Blue;
Я намагаюся відключити конкретне посилання та застосувати стиль курсору, але ця команда CSS cursor: text;не вплине. Курсор завжди є типовим. Я використовую останню версію Firefox.
CSS:
pointer-events: none !important;
cursor: text;
color: Blue;
Відповіді:
Використання 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 без нього.
.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;
}
Якщо ви не знаєте, JavaScript anchorElement- це сам Вузол або Елемент. Найпоширеніший спосіб отримати елемент - це використання idатрибута HTML . Скажімо, маємо:
<a id='whatever' href='#'>Text Here</a>
Ваш код може бути:
document.getElementById('whatever').onclick = function(){
return false;
}
Існує ряд інших способів отримати Nodes.
Моїм випадком використання був елемент, який можна перетягнути, який не міг мати жодної події покажчика, а також жодного батьківського елемента з подією покажчика.
Я вирішив це, умовно застосувавши глобальний стиль, змушуючи захоплюючий курсор лише під час перетягування. (Я використовую React та styled-компоненти, але та ж логіка може бути застосована і до vanilla js).
const SetDraggingCursor = createGlobalStyle`
* {
cursor: grabbing !important;
}
`;
// ...
{isDragging && <SetDraggingCursor />}
Замість обгортки це можна зробити за допомогою чистого CSS зсередини. (Я використовую це з веб-компонентом material, тому код стає дещо складнішим.)
button:disabled {
> * {
cursor: not-allowed;
pointer-events: initial;
}
&::before {
background-color: #fff0;
}
&::after {
background-color: #fff0;
}
}
<button>
<svg .../>
</button>
Я також намагався ::beforeі ::afterз button:disabledбезпосередньо, але тільки не міг змусити це статися ...