我已经开发了带有表单的应用程序。这些表格是用字段组构造的,因此您可以看到哪些输入字段属于部分。每个场景都有一个传奇。代码看起来像:
<fieldset>
<legend>Title</legend>
<label>Title: <input id="title" type="text"/></label>
<button>Create Object</button>
</fieldset>
现在我们进行了ScreenReader测试,因为我们有盲用户。我们提到,ScreenReader(JAWS)就像普通文本一样读取legend
中的标题。因此,它写着:"标题。标题输入。"但是我们期望STH喜欢:"标题标题。标题。标题输入。"
用户说,如果传说是标题,那就更好了,以便她可以使用jawl-command跳到截面。
现在我的问题是:是否允许(html规范)将归档的legend包裹在例如h3
标签? - 更好的问题:如果我将h3
-TAG放置在legend
-TAG中,即使它不是W3C -Conform?:
<fieldset>
<legend><h3>Title</h3></legend>
<label>Title: <input id="title" type="text"/></label>
<button>Create Object</button>
</fieldset>
如果不允许您解决这个问题?编程定制的现场集?
目标是在阅读页面时,ScreenReader在传奇文本和普通文本之间有所不同。我该如何实现?
不,您的代码产生无效的HTML:
错误:元素
h3
在这种情况下不允许作为元素legend
的孩子。
您可以通过 W3C验证器来找到以下代码来找到这一点:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<fieldset>
<legend><h3>Title</h3></legend>
<label>Title: <input id="title" type="text"/></label>
<button>Create Object</button>
</fieldset>
</body>
</html>
解决方案
我建议这样做:
legend {
font-weight: bold;
font-size: 1.17em;
}
.screen-reader-only {
position: absolute;
left: -999em;
}
<fieldset>
<legend><span class="screen-reader-only">Caption </span>Title</legend>
<label>Title: <input id="title" type="text"/></label>
<button>Create Object</button>
</fieldset>
另请参见此小提琴。
这样,屏幕阅读器总是读取Caption
,但从未在视觉上显示。
我个人宁愿为用户提供,也不愿在此方面遵守规则。
如果您确实确实在传说中使用了H3标签,那就这样 - 您的用户将非常感激。您唯一坚持有效HTML获胜的人就是您,这对用户没有好处。 - 但是,我不确定您实际上在这里需要一个现场集/传说。
当OP将其用于内部应用程序/Intranet时,我相信无视SEO和搜索引擎/蜘蛛是完全可以的。