搜尋
首頁web前端css教學交互媒體特徵及其潛力(對於錯誤的假設)

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

本文是對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
CSS動畫:很難創建它們嗎?CSS動畫:很難創建它們嗎?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcsssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingMultatingMultationMultationProperPertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用CombanningWiThjavoFofofofoftofofo

CSS計數器:自動編號的綜合指南CSS計數器:自動編號的綜合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他們可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑戰挑戰InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)創造性

使用捲軸驅動動畫的現代滾動陰影使用捲軸驅動動畫的現代滾動陰影May 07, 2025 am 10:34 AM

使用滾動陰影,尤其是對於移動設備,是克里斯以前涵蓋的一個微妙的UX。傑夫(Geoff)涵蓋了一種使用動畫限制屬性的新方法。這是另一種方式。

重新訪問圖像圖重新訪問圖像圖May 07, 2025 am 09:40 AM

讓我們快速進修。圖像地圖一直返回到HTML 3.2,首先是服務器端地圖,然後使用映射和區域元素通過圖像上的單擊區域定義了可單擊區域。

DEV狀態:每個開發人員的調查DEV狀態:每個開發人員的調查May 07, 2025 am 09:30 AM

開發委員會調查現已開始參與,並且與以前的調查不同,它涵蓋了除法:職業,工作場所,以及健康,愛好等。 

什麼是CSS網格?什麼是CSS網格?Apr 30, 2025 pm 03:21 PM

CSS網格是創建複雜,響應式Web佈局的強大工具。它簡化了設計,提高可訪問性並提供了比舊方法更多的控制權。

什麼是CSS Flexbox?什麼是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

See all articles

熱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

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

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用