在 HTML 中,可以使用 tabindex 屬性為元素添加聚焦功能。當 tabindex 的值為正數時,表示該元素可以通過 tab 鍵獲得焦點,按下 Enter 鍵可以觸發聚焦事件。我們可以通過 JavaScript 來處理這些聚焦事件,以滿足我們的需求。
下面是一個簡單的例子,展示了如何使用 JavaScript 監聽 div 的聚焦事件,并在該事件發生時改變元素的背景色。
<div id="myDiv" tabindex="0"></div> <br> <script> var div = document.getElementById("myDiv"); <br> div.addEventListener("focus", function() { this.style.backgroundColor = "yellow"; }); </script>
在上述代碼中,我們獲取了 id 為 "myDiv" 的 div 元素,并為其添加了 tabindex 屬性以使其可獲得焦點。然后我們使用 addEventListener 方法來監聽其聚焦事件,當該事件發生時,會執行相應的回調函數來改變背景色為黃色。
除了 focus 事件,還有一些相關的事件可以用于處理 div 的聚焦交互,例如 blur、focusin 和 focusout 事件。blur 事件在元素失去焦點時觸發,而 focusin 和 focusout 事件則是在元素獲得和失去焦點時觸發,且這兩個事件會冒泡。
<div id="myDiv" tabindex="0"></div> <br> <script> var div = document.getElementById("myDiv"); <br> div.addEventListener("blur", function() { this.style.backgroundColor = "white"; }); <br> div.addEventListener("focusin", function() { this.style.border = "3px solid blue"; }); <br> div.addEventListener("focusout", function() { this.style.border = "none"; }); </script>
在上述代碼中,我們為 div 元素分別添加了 blur、focusin 和 focusout 事件的監聽器。當 div 失去焦點時,背景色被改為白色;當 div 獲得焦點時,邊框被改為藍色;當 div 失去焦點時,邊框被移除。
除了 JavaScript,CSS 偽類也可以用于處理 div 的聚焦效果。偽類 :focus 可以在 div 聚焦時應用相應的樣式,而 :focus-within 偽類可以在 div 及其后代元素獲得焦點時應用樣式。
<style> div:focus { background-color: yellow; } <br> div:focus-within { border: 3px solid blue; } </style> <br> <div tabindex="0"> <input type="text" /> </div>
在上述代碼中,div 元素在聚焦時會有黃色背景色;而當 div 或其內部的 input 元素獲得焦點時,都會有藍色邊框。
通過以上幾個代碼案例,我們可以看到 div 聚焦事件的一些基本用法和特點。根據實際需求,我們可以使用 JavaScript 和 CSS 來處理和改變元素的樣式、行為等,并提升用戶交互體驗。</ p>