Как отключить ссылку, используя только CSS?
есть ли способ отключить ссылку с помощью CSS?
У меня есть класс с именем current-page и хотите, чтобы ссылки с этим классом были отключены, чтобы при их нажатии не происходило никаких действий.
20 ответов
ответ уже есть в комментариях на вопрос. Для большей видимости я копирую данное решение здесь:
.not-active {
  pointer-events: none;
  cursor: default;
  text-decoration: none;
  color: black;
}<a href="link.html" class="not-active">Link</a>для поддержки браузера, см. https://caniuse.com/#feat=pointer-events. Если вам нужна поддержка IE существует обходной путь; см. ответ.
предупреждение:pointer-events в CSS для не-SVG элементов является экспериментальным. Используемая функция быть частью спецификации проекта пользовательского интерфейса CSS3, но из-за многих открытых проблем было отложено до CSS4.
.disabled {
  pointer-events: none;
  cursor: default;
  opacity: 0.6;
}<a href="#" class="disabled">link</a>CSS можно использовать только для изменения стиля чего-либо. Лучшее, что вы могли бы сделать с чистым CSS, - это полностью скрыть ссылку.
то, что вам действительно нужно, это javascript. Вот как вы будете делать то, что хотите, используя библиотеку jQuery.
$('a.current-page').click(function() { return false; });
CSS не может этого сделать. CSS предназначен только для презентации. Ваши варианты:
- не входить  в своем <a>теги.
- используйте JavaScript, чтобы найти якорные элементы с этим class, и снять ихhrefилиonclickатрибуты соответственно. jQuery поможет вам в этом (Никф показал, как сделать что-то подобное, но лучше).
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 отключена, но она выглядит как link
<button type="button" class="btn btn-link">Link</button>
вы можете установить  до javascript:void(0)
.disabled {
  /* Disabled link style */
  color: black;
}<a class="disabled" href="javascript:void(0)">LINK</a>Если вы хотите придерживаться только HTML / CSS в форме, другой вариант - использовать кнопку. Стиль его и установить .
единственный способ, которым вы могли бы сделать это без CSS, - установить CSS на обертку div, которая заставила ваш a исчезнуть, а что-то еще занять его место.
например:
<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.
если вы хотите, чтобы это был только CSS, логика отключения должна быть определена CSS.
чтобы переместить логику в определениях CSS, вам придется использовать селекторы атрибутов. Вот несколько примеров :
отключить ссылку, которая имеет точный href:=
вы можете отключить ссылки, содержащие определенное значение href, например:
<a href="//website.com/exact/path">Exact path</a>
[href="//website.com/exact/path"]{
  pointer-events: none;
}
отключить ссылку, содержащую фрагмент пути:*=
здесь любой ссылке содержащий /keyword/в пути будет отключена
<a href="//website.com/keyword/in/path">Contains in path</a>
[href*="/keyword/"]{
  pointer-events: none;
}
отключить ссылку, которая начинается с: ^=
the [attribute^=value] оператор target атрибут, который начинается с определенного значения. Позволяет отбрасывать веб-сайты и корневые пути.
<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] оператор target атрибут, который заканчивается конкретное значение. Может быть полезно отказаться от расширений файлов.
<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;
}
поддержка браузеров
селекторы атрибутов поддерживаются начиная с IE7. :not() селектор с IE9.
на указатель-события свойство позволяет управлять элементами HTML реагируйте на события мыши / касания-включая CSS hover / active states, нажмите / коснитесь события в Javascript, и независимо от того, является ли курсор видимый.
Это не единственный способ вам отключить ссылку, но хороший способ CSS, который работает в IE10+ и всех новых браузерах:
.current-page {
  pointer-events: none;
  color: grey;
}<a href="#" class="current-page">This link is disabled</a>Я искал через интернет и не нашел ничего лучше, чем этой. В основном, чтобы отключить функциональность нажатия кнопки, просто добавьте стиль CSS с помощью jQuery следующим образом:
$("#myLink").css({ 'pointer-events': 'none' });
затем, чтобы включить его снова, сделайте это
$("#myLink").css({ 'pointer-events': '' });
проверено на Firefox и IE 11, это сработало.
спасибо всем, кто разместил решения, я объединил несколько подходов, чтобы обеспечить некоторые более продвинутые disabled функциональность.  вот суть, и код ниже.
This provides for multiple levels of defense so that Anchors marked as disable actually behave as such.
Using this approach, you get an anchor that you cannot:
  - click
  - tab to and hit return
  - tabbing to it will move focus to the next focusable element
  - it is aware if the anchor is subsequently enabled
1.  Include this css, as it is the first line of defense.  This assumes the selector you use is 'a.disabled'
    a.disabled {
      pointer-events: none;
      cursor: default;
    }
 2. Next, instantiate this class such as (with optional selector):
    $ ->
      new AnchorDisabler()
вот класс coffescript:
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 js 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
вы можете использовать этот 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').on('click', 'a.Link', function(event){
    event.preventDefault();
});
вы также можете изменить размер другого элемента, чтобы он охватывал ссылки (используя правый z-индекс): это "съест" клики.
(мы обнаружили это случайно, потому что у нас была проблема с внезапно неактивными ссылками из-за "отзывчивого" дизайна, заставляющего H2 покрывать их, когда окно браузера было размером с мобильный.)
Я:
.current-page a:hover {
pointer-events: none !important;
}
и было недостаточно; в некоторых браузерах он все еще отображал ссылку, мигая.
я добавил:
.current-page a {
cursor: text !important;
}
Это можно сделать в CSS
.disabled{
  cursor:default;
  pointer-events:none;
  text-decoration:none;
  color:black;
}<a href="https://www.google.com" target="_blank" class="disabled">Google</a>на
обратите внимание:text-decoration: none; и color: black; не требуется, но это делает ссылку более похожей на обычный текст.
pointer-events:none отключить по ссылке:
.disabled {
       pointer-events:none;
}
<a href="#" class="disabled">link</a>
<a href="#!">1) Link With Non-directed url</a><br><br>
<a href="#!" disabled >2) Link With with disable url</a><br><br>