【发布时间】:2020-05-25 06:05:57
【问题描述】:
我正在构建一个组件,该组件需要通过将 opacity 的 css 属性添加为 0 来隐藏输入。但是该组件的外观是一个按钮。隐藏输入的原因是出于选择目的。输入元素支持无线电类型。
问题 1: 将按钮包裹在表单元素周围有什么含义?是否有任何可访问性问题?
问题2:而不是<button> 标签,使用<fieldset> 会更好吗?
下面是组件的Vue模板?
<template>
<button :class="[$style['button-group-item'], sizeClass, classObject, variationClass]">
<label class='button-group-item__label'>
<input class="button-group-item__input" type="radio" :checked="checked" @change="$emit('change', $event.target.checked)"/>
<span>
{{ text }}
</span>
</label>
</button>
</template>
【问题讨论】:
-
为什么需要使用 css 隐藏元素而不是使用
v-if指令? -
对于可访问性,标签是指输入,按钮是指表单。你为什么要把它们结合起来?
-
您是否尝试制作切换按钮?
-
这主要是由于组件的设计规范。但正确,@GrahamRitchie,我正在尝试制作一个切换按钮。从功能上考虑选项卡。
-
我认为最好只使用
<button aria-pressed=false>label here</button>。详情请见developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/…。
标签: html forms vue.js accessibility