>這是一個非常普遍但經常未解決的可訪問性問題:如果我不使用眼睛(和鼠標的手指向),那麼我如何“專注於”某些東西以與之互動?我確定您知道的答案是通過程序化的重點。但是,這並不像將“焦點”元素合併到我們的設計中那麼簡單。有時,不是用戶,而是用戶代表用戶的接口必須在不同區域之間移動。這就需要故意將重點管理集中在開發人員方面。
對於可訪問性,即使是最簡單的JavaScript驅動的交互式小部件,管理焦點至關重要,但是使用自動化的QA
工具幾乎不可能進行正確的用法。這就是為什麼我今天想帶您幾個簡單的示例。>
在此示例中,我邀請您想像您已經“增強”了同一頁面導航鏈接,以便您不要突然跳到鏈接的目標片段(#第1節,假設),而是將其輕輕地引入此目的地通過JavaScript捲軸動畫。使用此技術時要注意的有關可訪問性的重要信息是覆蓋元素的默認功能的必要性。
event<span>.preventDefault();</span>通過這樣做,您告訴瀏覽器要避免做任何標準,預期或可互操作的事情。您告訴鏈接
不鏈接。實際上,確定鏈接實際上正確將用戶正確到頁面片段的唯一方法是關閉JavaScript。好吧, >通過簡單地鏈接到頁面片段(就像JavaScript Off的一個人一樣),瀏覽器本質上是
focus此片段。這是屏幕讀取器輸出和鍵盤交互現在基於的地方。通過對ScrollTop進行動畫操作,不會進行這種聚焦操作,這意味著屏幕閱讀器的輸出和鍵盤交互從頁面區域繼續進行,而不再是視圖。這是不好的。 補救症
注意:感謝Patrick和其他人在評論中指出的事實是,這應該使用“ -1”而不是“ 0”作為Tabindex值,我們現在已經更正了。 🎜>
我們的第二個任務是將JavaScript focus()方法包括在動畫的回調中,確保動畫結束後的片段焦點>。
>最後,最好像簡單地鏈接到片段(例如http:// my-site/#Section1)那樣記錄我們在URL中的子頁面位置。這樣,我們就可以將地址複製為指向特定部分的鏈接(即我們可以“深鏈接”)。在焦點()發生之後包括以下行:<span><span><span><section</span> id<span>="section1"</span> tabindex<span>="-1"</span>></span> </span> ... <span><span><span></section</span>></span></span>>
當然,您將根據相應鏈接的HREF為任何變量替換“第1節”,減去#。
<span>document.getElementById('section1').focus();</span>結果
>一個小的Codepen演示在下面嵌入。嘗試將其與僅作為慣常鍵盤用戶的tab和Shift Tab使用。
<span>window.location.hash = 'section1';</span>請參閱codepen上的sitepoint(@sitepoint)的筆IDXJL。
請注意,我們在JavaScript中即時添加了Tabindex屬性。現在,我們將要滾動到的部分(片段)集中到了我們所感知的位置不僅僅是視覺效果。也就是說,我應該在轉到新部分後按TAB鍵,我將集中該部分中的下一個焦點元素;在下面的示例中,超鏈接讀取“ heydonworks.com”。
>event<span>.preventDefault();</span>
>如果我們不專注於第1節,請按TAB鍵將關注插圖鏈接之後的下一個元素,該鏈接將將視口躍回我們的導航塊。換句話說,鍵盤用戶將返回第一方。
><span><span><span><section</span> id<span>="section1"</span> tabindex<span>="-1"</span>></span> </span> ... <span><span><span></section</span>></span></span>
這是另一個小例子。讓我們假裝用戶按下
為了使打開此按鈕可訪問,我們應該以與最後一個示例中的頁面片段相同的方式進行焦點()對話框。使用jqueryui,對話框的第一個按鈕(在我們的情況下為“確認”)將集中在集中。其他實現將對話容器集中。無論哪種方式,用戶都可以通過編程方式發送到正確的位置。 >問題是:“對話框關閉時會集中註意力?”如果我們什麼也不做,新隱藏的對話框一定會失去焦點,但什麼都不會取代。在許多用戶代理中,這意味著默認情況下
焦點是使用戶通過文檔再次找到自己的位置。 >重新集中打開對話框的元素是更合乎邏輯的。這很容易通過將DOM節點保存在內存中或在其上寫下標記以供以後使用,例如:<span>document.getElementById('section1').focus();</span>:
>在對話框的結尾()方法的末尾,我們只會集中原始元素:
>大多數屏幕讀取器重新集中在按鈕時,都會宣布頁面的標題,然後宣布焦點按鈕。這樣,您知道自己在哪裡。使用此方法的對話框的一個示例可以進行測試。
<span>window.location.hash = 'section1';</span>>
結論
<span><span><span><a</span> href<span>="#whatever"</span>></span>scroll to section 'whatever'<span><span></a</span>></span></span>>將漸進式增強與可訪問性混合在一起是一個普遍的錯誤。想到確保與JavaScript合作的某些東西降低(在這種情況下)意味著它是“可訪問”的。當然,它可以使沒有JavaScript的人可以訪問它,但是大多數鍵盤和屏幕讀取器用戶都像其他任何人一樣在JavaScript的幫助下與您的應用程序進行交互。訣竅是以尊重所有用戶的不同行為和輸入的方式使用JavaScript。
>還有一件事:如果您曾經負責使用使用ember.js或angularjs構建的一個頁面應用程序,請使用JavaScript focus()方法的代碼庫。此類應用程序完全使用“視圖”完全重寫導航;單一頁面的動態重建。如果沒有一些仔細的焦點管理,以這種方式重建DOM很快就可以很快弄清可訪問性。如果您的GREP發現不到幾個.cocus實例,則可能有很多工作要做。
>>在學習時如何保持專注?
>
>我如何改善工作的注意力?您的任務並根據其重要性和緊迫性對它們進行優先級。定期休息以避免倦怠也很有幫助。此外,最大程度地減少了分心,例如關閉設備上不必要的通知,可以幫助您專注於任務。>睡眠如何影響注意力和濃度?
睡眠在認知功能中起著至關重要的作用。缺乏睡眠會損害關注,專注和決策能力。因此,獲得足夠的質量睡眠對於保持良好的專注和集中度至關重要。>
>有些共同的注意力,我如何避免它們?常見的干擾包括社交媒體,電子郵件和不必要的通知在您的設備上。為了避免這些,您可以設置特定時間檢查電子郵件和社交媒體。關閉不必要的通知也可以幫助最大程度地減少干擾。
>以上是學習焦點()的詳細內容。更多資訊請關注PHP中文網其他相關文章!