最好别这样做
See the Pen disabled-link by yrq110 ( @yrq110 ) on CodePen .
Look disabled
.isDisabled { cursor: not-allowed; opacity: 0.5; }
Act disabled
对于使用鼠标点击的情况,使用 pointer-events: none;
.isDisabled > a { color: currentColor; display: inline-block; /* For IE11/ MS Edge bug */ pointer-events: none; text-decoration: none; }
对于使用键盘enter的情况,使用JS绑定事件
var link = document.querySelector('a'); link.addEventListener('click', function (event){ if (this.parentElement.classList.contains('isDisabled')) { event.preventDefault(); } });
Described as disabled
对于屏幕阅读软件(Screen Reader),添加aria属性: aria-disabled="true"
<spanclass="isDisabled"> <ahref="http://yrq110.me"aria-disabled="true"> Disabled Link </a> </span>
.isDisabled { cursor: not-allowed; opacity: 0.5; } a[aria-disabled="true"] { color: currentColor; display: inline-block; /* For IE11/ MS Edge bug */ pointer-events: none; text-decoration: none; }
考虑到防止误触,修改JS代码
document.body.addEventListener('click', function (event){ // filter out clicks on any other elements if (event.target.nodeName == 'A' && event.target.getAttribute('aria-disabled') == 'true') { event.preventDefault(); } });
Toggle Code
function disableLink(link){ // 1. Add isDisabled class to parent span link.parentElement.classList.add('isDisabled'); // 2. Store href so we can add it later link.setAttribute('data-href', link.href); // 3. Remove href link.href = ''; // 4. Set aria-disabled to 'true' link.setAttribute('aria-disabled', 'true'); } function enableLink(link){ // 1. Remove 'isDisabled' class from parent span link.parentElement.classList.remove('isDisabled'); // 2. Set href link.href = link.getAttribute('data-href'); // 3. Remove 'aria-disabled', better than setting to false link.removeAttribute('aria-disabled'); }
最后
问题来了,什么时候会有这样的需求呢?
原作者最后的话:
Seriously folks, just don’t do it.
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。