Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 存储模块';s状态是类还是数据属性?_Performance_Dom_Accessibility_Semantic Web - Fatal编程技术网

Performance 存储模块';s状态是类还是数据属性?

Performance 存储模块';s状态是类还是数据属性?,performance,dom,accessibility,semantic-web,Performance,Dom,Accessibility,Semantic Web,考虑一个简单的手风琴模块,它可以通过用户输入进行扩展或折叠 如果模块的状态要存储在DOM上,那么应该以何种方式实现 作为一个班级: <article class="accordion-item expanded">...</article> 。。。 或作为自定义数据属性: <article class="accordion-item" data-state="expanded">...</article> alternatively... &l

考虑一个简单的手风琴模块,它可以通过用户输入进行扩展或折叠

如果模块的状态要存储在DOM上,那么应该以何种方式实现

作为一个班级:

<article class="accordion-item expanded">...</article>
。。。
或作为自定义数据属性:

<article class="accordion-item" data-state="expanded">...</article>
alternatively...
<article class="accordion-item" data-expanded="true">...</article>
。。。
或者。。。
...

关于语义、可访问性和性能,应该使用哪种方法以及原因?

对于可访问性,您需要做两件事之一:

  • 使用WAI-ARIA创作指南实现手风琴,手风琴具有必要的ARIA属性和用于键盘导航的JavaScript事件处理程序

  • 将手风琴的状态放在屏幕外的文本中,并在其更改时进行维护。您可以通过将
    添加到上面的每一篇文章中,并使用如下所述的技术来实现此目的:


  • 这三种方法在语义上都是无意义的,即类名或用户定义的自定义数据属性中没有内在语义值,也不会影响标记的含义或结构。性能是您必须自己衡量的。@BoltClock,可以提出一个论点,即在DOM元素的类中存储状态可能在语义上不代表类属性的点。此外,对于开发人员来说,标记可以是语义的,即使不是严格意义上的“语义”。