html - 纯 CSS Accordion 的可访问性问题

标签 html css wai-aria

我有一个 Accordion ,我正在努力使键盘可访问。我正在使用输入元素来跟踪用户何时单击 Accordion 并显示隐藏的内容,这是导致问题的原因,因为它设置为显示的输入:无。

是否有办法使其可访问?我仍在学习网络可访问性。将不胜感激任何提示!

.accordion {
  width: 100%;
  box-shadow: 0 12px 12px -6px rgba(0, 0, 0, 0.2);
}

.accordion input[name="panel"] {
  display: none;
}

.accordion label {
  position: relative;
  display: block;
  padding: 1em;
  background: rgba(65, 64, 66, 0.8);
  border-radius: 0.2em 0.2em 0 0;
  width: auto;
  font-size: 1.2em;
  color: #fff;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-family: FSHumanaRegular;
  margin-top: 1em;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.865, 0.14, 0.095, 0.87);
}

.accordion label:after {
  content: "+";
  position: absolute;
  right: 1em;
  width: 1em;
  height: 1em;
  color: #eee;
  text-align: center;
  border-radius: 50%;
  background: #fdb600;
}

.accordion label:hover {
  color: #fdb600;
}

.accordion input:checked + label {
  color: #fdb600;
}

.accordion input:checked + label:after {
  content: "-";
  line-height: 0.8em;
}

.accordion .accordion_content {
  overflow: hidden;
  max-height: 0px;
  position: relative;
  padding: 0 1.425em;
  background: rgba(255, 255, 255, 0.6);
  box-sizing: content-box;
  transition: all 150ms cubic-bezier(0.865, 0.14, 0.095, 0.87);
}

.accordion .accordion_content .accordion_body {
  line-height: 1.4em;
  padding: 1.8em 0 1.5em;
}

input[name="panel"]:checked ~ .accordion_content {
  max-height: 1000em;
}
<div class="accordion" id="myAccordion">
							<div>
								<input type="checkbox" name="panel" id="accordionContent">
								<label for="accordionContent">Historical Data</label>
								<div class="accordion_content">
									<div class="accordion_body">
                    <!-- CONTENT -->
                    <p>Hello, world!</p>
									</div>
								</div>
							</div>
</div>

最佳答案

首先,您不应该使用复选框来折叠/展开任何元素(不好的做法)。您可以改用 <button>这将触发/控制此功能,在此按钮上,您应该进一步添加适当的 ARIA 值。

您可以查看以下 ARIA 属性,以帮助您进一步启用可折叠元素的可访问性。

           aria-expanded="false" 
           aria-controls="collapsedElementId"

例如,Bootstrap 的折叠组件实现使用这样的标记来增强可访问性:https://getbootstrap.com/docs/4.1/components/collapse/#accessibility

关于html - 纯 CSS Accordion 的可访问性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54432396/

相关文章:

javascript - 在 Javascript 中创建和更改 HTML 元素

html - CSS 复选框 :checked Not Working with Two Toggles

css渐变到ie

javascript - 选中两个复选框时背景颜色如何变化

html - 获取背景图像或文本以填充宽度,不重复,但不垂直拉伸(stretch)

javascript - 延迟函数直到 Assets 加载?

php - CSS 显示不在第三级发送选择值? PHP 获取 0 字符串值

java - aria 禁用的 Selenium 代码

html - 如何使屏幕截图图像易于访问?

javascript - 将 Web 可访问性添加到 Twitter bootstrap Accordion