搜索
首页web前端js教程可访问多个项目的拖放

Accessible Drag and Drop with Multiple Items

>本文展示了为多个元素处理和键盘可访问性增强HTML5拖放功能,从而使视力和屏幕阅读器用户受益。 假设对拖放API的基本熟悉(请参阅初学者的介绍性文章),我们将重点放在扩展其功能上。

> dataTransfer虽然多个元素的核心数据操作很简单(使用单独的数组而不是

),但用户界面的复杂性显着增加。 由于本机拖放缺乏后者,我们将解决选择前的机制和键盘支持。 注意:触摸事件和浏览器多填充不在本文的范围之内。 呈现的解决方案在单页中起作用,而不是跨窗户。

> 密钥改进:

  • >增强了用于多项项目选择和键盘导航的拖放式拖放,改善了可访问性。
  • 一个数组在拖动过程中跟踪多个元素,简化了ID不是静态的动态环境(例如CMS系统)的集成。
  • aria-grabbed使用ARIA属性(aria-dropeffect>,
  • )和标准键击(用于选择的空间,控制M/命令M用于drop)的键盘可访问性。
  • 简化的接口避免了连续的选择,将所有修饰符键同样处理以进行非连续选择。
  • >动态ARIA属性更新可确保无缝的交叉模式(鼠标/键盘)交互。
  • >强大的跨浏览器兼容性解决了诸如drop事件的问题,诸如使用命令键在mac/webkit上启动的问题(使用
  • 用于删除最终确定)。dragend>

基本的拖放(简化示例):> 一个功能示例使用鼠标相互作用演示了单个元素的基本拖放。 该代码维护项目参考,而不是依靠

来用于元素ID,简化了过程并改善了对服务器端应用程序的适应性。 由于浏览器支持不一致,

dataTransfer被省略。 可拖动属性是通过JavaScript动态应用的,分开关注点并允许排除破裂的实现(例如旧的Opera版本)。 HTML使用effectAllowed>属性进行识别。dropEffect> data-draggable

>可访问的拖放实现:

> 可访问性是最重要的。 我们将遵守ARIA的拖放惯例指南:>

  1. 可拖动的元素使用aria-grabbed="false",并且是键盘navigable。
  2. >
  3. SpaceBar选择元素; aria-grabbed在选择时变为“ true”。
  4. >
  5. 控制M/命令M最终确定选择(第一个下降目标的快捷方式)。
  6. 目标元素使用
  7. 指示允许的动作。aria-dropeffect>
  8. 控制M/命令M或Enter在目标元素上执行Drop Action。>
  9. 逃脱取消操作。
  10. >后行动清理重置
  11. aria-dropeffect> aria-grabbed
  12. >我们将增强这些建议:选择结束的击键是可选的,并且控制M/命令M被补充用于丢弃的Enter。 为简单起见,所有修饰符键(换档,控制,命令)启用无连续选择。
>

多个选择(鼠标和键盘):

> 代码添加>和

>属性到可拖动元素。鼠标选择使用

>(单/重置)和(取消/多重)。 键盘选择使用aria-grabbed与空格键一起选择,处理用于多个选择的修饰符。 Atabindex属性确保选择仅限于单个容器。 mousedownmouseupkeydown>函数管理选择状态。selections.owner> addSelection removeSelection拖动选择(鼠标和键盘):clearSelections

>

用于指示有效的下降目标。 选择时键盘交互添加。 对于鼠标的相互作用,

事件使用Aaria-dropeffect>变量和aria-dropeffect="move">函数来处理事件冒泡。 dragenter从目标容器中的项目中删除,以改善键盘导航。 dragleave related丢弃选择(鼠标和键盘):getContainer> tabindex

事件(鼠标)处理掉落并重置。 由于浏览器不一致而省略了

事件。 键盘交互在目标容器上使用事件来处理滴滴,管理焦点以避免重置问题。

进一步的增强:dragend drop未来的改进可能包括触摸/指针事件支持,浏览器多填充,选择排序,可自定义的副本/移动操作,连续选择,自定义拖动幽灵和拖动过程中的视觉提示。 该代码可在github上找到(原始文本中提供的链接)。keydown>

FAQS:

>常见问题解答部分提供了有关可访问拖放实现的常见问题的清晰简洁答案,涵盖了多个元素,可辍学的区域,订单控制,错误处理和测试。

>

以上是可访问多个项目的拖放的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
JavaScript的核心:它是在C还是C上构建的?JavaScript的核心:它是在C还是C上构建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript应用程序:从前端到后端JavaScript应用程序:从前端到后端May 04, 2025 am 12:12 AM

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

Python vs. JavaScript:您应该学到哪种语言?Python vs. JavaScript:您应该学到哪种语言?May 03, 2025 am 12:10 AM

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架:为现代网络开发提供动力JavaScript框架:为现代网络开发提供动力May 02, 2025 am 12:04 AM

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

JavaScript,C和浏览器之间的关系JavaScript,C和浏览器之间的关系May 01, 2025 am 12:06 AM

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

node.js流带打字稿node.js流带打字稿Apr 30, 2025 am 08:22 AM

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE

Python vs. JavaScript:性能和效率注意事项Python vs. JavaScript:性能和效率注意事项Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差异主要体现在:1)Python作为解释型语言,运行速度较慢,但开发效率高,适合快速原型开发;2)JavaScript在浏览器中受限于单线程,但在Node.js中可利用多线程和异步I/O提升性能,两者在实际项目中各有优势。

JavaScript的起源:探索其实施语言JavaScript的起源:探索其实施语言Apr 29, 2025 am 12:51 AM

JavaScript起源于1995年,由布兰登·艾克创造,实现语言为C语言。1.C语言为JavaScript提供了高性能和系统级编程能力。2.JavaScript的内存管理和性能优化依赖于C语言。3.C语言的跨平台特性帮助JavaScript在不同操作系统上高效运行。

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

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

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

安全考试浏览器

安全考试浏览器

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

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器