目錄
主要輸入限制
評估所有投入
結合細微差別的查詢
可能需要腳本
避免經歷破裂
明確的用戶選擇
負責的查詢
首頁 web前端 css教學 交互媒體特徵及其潛力(對於錯誤的假設)

交互媒體特徵及其潛力(對於錯誤的假設)

Apr 02, 2025 pm 06:15 PM

交互媒體特徵及其潛力(對於錯誤的假設)

本文是對2015年Dev.opera作品的大大擴展更新,闡明了有關媒體查詢級別4相互作用媒體功能的誤解( pointerhoverany-pointerany-hover )。原始文章誤解了any-hover: none ;該版本與最新的工作草案保持一致,解決了瀏覽器實現之間的不一致之處(請參閱當前的測試結果和相關的錯誤報告)。

媒體查詢4級旨在根據用戶輸入設備調整網站樣式和功能(通過window.matchMedia的CSS Interactivity或JavaScript行為)。雖然通常得到很好的支持,但實施變化持續存在。

常見用例涉及根據觸摸屏與鼠標/手寫筆的使用調整控制大小,或者有條件地啟用基於懸停的菜單:

 <code>@media (pointer: fine) { /* Mouse or stylus: small controls okay */ } @media (pointer: coarse) { /* Touchscreen: larger touch targets */ } @media (hover: hover) { /* Enable hover menus */ } @media (hover: none) { /* Disable hover menus */ }</code>
登入後複製

開發人員經常利用這些功能進行觸摸檢測,通常在檢測pointer: coarse時聆聽觸摸事件:

 if(window.matchmedia && window.matchmedia(“(指針:cooly)”)。匹配){
 / *粗指針:聽觸摸事件 */
 target.AddeventListener(“ TouchStart”,...);
} 別的 {
 / *否則,使用鼠標/鍵盤事件 */
}
登入後複製

但是,這種方法是簡單的,並且誤解了功能的目的。

主要輸入限制

pointerhover僅揭示主要指針輸入的特徵。這可能與用戶的實際主要輸入有所不同,尤其是在設備/輸入線模糊的情況下。至關重要的是,這些功能無法檢測到僅鍵盤的用戶。因此,無論查詢結果如何,請確保鍵盤可訪問性。

帶有藍牙鼠標的手機可能會報告pointer: coarsehover: none 。相反,表面平板電腦可能主要使用觸控板( pointer: fine ),但是用戶可能更喜歡觸摸屏。

any-pointerany-hover都可以解決此問題。

評估所有投入

any-pointerany-hover反映了所有指針輸入的組合功能。如果輸入具有不同的特徵,則多個值可以匹配。當前的實施通常的行為如下:

為了改善原始用例,對所有指針輸入的基本決策:“如果任何輸入很粗糙,放大控件”和“如果至少一個輸入支持懸停的話,則啟用Hover Menus。”

 <code>@media (any-pointer: coarse) { /* At least one coarse pointer: larger controls */ } @media (any-hover: hover) { /* At least one hover-capable input: enable hover menus */ }</code>
登入後複製

any-pointer: none僅當存在指針輸入時,沒有一個是正確的。 any-hover: none僅當沒有任何輸入支持懸停的情況下,就不是正確的,從而使其在很大程度上冗餘。

結合細微差別的查詢

結合查詢以進行精緻評估:

 <code>@media (pointer: coarse) and (any-pointer: fine) { /* Primary input is touchscreen, but a fine input exists. Prioritize touch, but mouse/stylus users can still interact. */ } @media (pointer: fine) and (any-pointer: coarse) { /* Primary input is mouse/stylus, but a touchscreen exists. Larger controls might be safest. */ } @media (hover: none) and (any-hover: hover) { /* Primary input lacks hover, but another input supports it. Treat hover as optional. */ }</code>
登入後複製

響應環境變化,瀏覽器會動態重新評估查詢(例如,添加藍牙鼠標)。

可能需要腳本

交互媒體功能並未表示當前使用的輸入。類似於輸入的工具?跟踪JavaScript事件,但這僅在互動開始提供信息,並且由於偽造的事件(輔助技術,iOS完整鍵盤支持)可能不准確。

避免經歷破裂

基於事件的觸摸檢測( pointer: coarse - >聽觸摸事件)是有缺陷的。它可以防止在觸摸設備上使用非電視屏幕屏幕輸入,並在主要由鼠標驅動的設備上使用觸摸屏輸入。相反,請務必收聽鼠標/鍵盤事件,並僅在any-pointer: coarse為TRUE時才添加觸摸事件偵聽器:

 / *始終收聽鼠標/鍵盤事件 */
target.AddeventListener(“ click”,...);

if(window.matchmedia && window.matchmedia(“(任何點:croun)”)。匹配){
 / *如果存在粗線,也請聽觸摸事件 */
 target.AddeventListener(“ TouchStart”,...);
}
登入後複製

或者,使用指針事件進行統一輸入處理。

明確的用戶選擇

提供一個可供用戶選擇的模式(觸摸/鼠標),以避免輸入檢測陷阱。使用媒體查詢通知默認設置,並檢測觸摸輸入以提示模式開關。

負責的查詢

了解交互媒體功能的局限性。不要假設單個輸入類型,只依靠pointerhover ,或忽略鍵盤可訪問性。取而代之的是,優先考慮觸摸友好性,提供用戶選擇,並始終確保鍵盤可訪問性。

以上是交互媒體特徵及其潛力(對於錯誤的假設)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

帶有粘性定位的堆疊卡和一點點的雜物 帶有粘性定位的堆疊卡和一點點的雜物 Apr 03, 2025 am 10:30 AM

前幾天,我發現了科里·金尼文(Corey Ginnivan)網站上的這一點,當您滾動時,彼此之間的卡片堆放集。

Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? 為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? Apr 05, 2025 pm 05:51 PM

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

如何通過CSS選擇第一個類名為item的子元素? 如何通過CSS選擇第一個類名為item的子元素? Apr 05, 2025 pm 11:24 PM

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? 在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? Apr 05, 2025 pm 10:21 PM

在前端開發中如何實現類似Windows...

See all articles