在純 CSS 中,您可以使用 pointer-events: none;
來禁止滑鼠點選事件。 這個屬性會禁用元素上的所有滑鼠事件,包括點選、懸停和其他滑鼠互動。
.disabled-element {
pointer-events: none;
}
將這個類新增到您想要禁用點選事件的 HTML 元素上即可。
一些需要注意的點:
-
子元素繼承: 如果父元素設定了
pointer-events: none;
,那麼它的所有子元素也將繼承這個屬性,並變得無法點選。 如果您希望子元素仍然可以點選,需要在子元素上明確地設定pointer-events: auto;
來恢復滑鼠事件。 -
JavaScript 互動:
pointer-events: none;
只禁用滑鼠事件。 JavaScript 事件監聽器(例如addEventListener('click', ...)
)仍然可以被觸發。 如果您需要完全禁用元素的互動,包括 JavaScript 事件,您需要在 JavaScript 程式碼中進行處理,例如移除事件監聽器或阻止事件傳播。 -
鍵盤導航:
pointer-events: none;
不會禁用鍵盤導航。 如果您需要禁用鍵盤導航,可以使用tabindex="-1"
屬性。 -
a 標籤: 對於
<a>
標籤,即使設定了pointer-events: none;
,預設情況下仍然可以透過鍵盤的 Tab 鍵選中並回車訪問連結。為了完全禁用<a>
標籤,除了pointer-events: none;
外,還需要設定disabled
屬性或使用 JavaScript 阻止預設行為。
示例:
<div class="disabled-element">
This div cannot be clicked.
<button>This button also cannot be clicked.</button>
<div class="enabled-element">
But this div can be clicked.
</div>
</div>
<style>
.disabled-element {
pointer-events: none;
}
.enabled-element {
pointer-events: auto;
}
</style>
在這個例子中,外部的 div
和它包含的 button
都無法被點選,但是內部的帶有 enabled-element
類的 div
仍然可以點選。
更全面的禁用方案 (JavaScript 輔助):
如果需要更全面的禁用,建議結合 CSS 和 JavaScript:
const element = document.querySelector('.disabled-element');
element.style.pointerEvents = 'none'; // 禁用滑鼠事件
element.setAttribute('tabindex', '-1'); // 禁用鍵盤焦點
element.addEventListener('click', (event) => {
event.preventDefault(); // 阻止任何點選事件
});
這種方法可以更全面地禁用元素的互動。