搜索
首页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 powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具