我正在努力改善Web应用程序的可访问性。有一个包含复选框,标签和该复选框中的图片的按钮,当在启用VoiceOver的情况下通过在iPad上左右滑动来选择它时,VoiceOver会突出显示按钮中的单个元素,而不是整个按钮。元件。我试图用几种不同的属性来样式化CSS,以使iOS中的VoiceOver功能忽略这些单独的元素。
aria-hidden:true;
speak:none;
user-select:none;
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently
supported by Chrome and Opera */
他们没有任何区别。我已经清除了Safari中的缓存以确保CSS正确更新,并且在桌面上我可以看到这些属性确实存在于不同的元素中,但是iOS仍然决定忽略CSS并读出这些元素/允许那些元素无论如何被选择。我所做的所有其他研究表明,禁用VoiceOver的唯一其他方法是在功能完善的应用程序中明确禁用它。我还有其他方法吗?
答案 0 :(得分:0)
您有正确的想法,只是使用不当。 <button aria-hidden="true">voiceover won't see me</button>
不是CSS属性,它是您放在html标记上的属性。因此,要隐藏按钮,您将拥有
<input type="checkbox">
<label>i like puppies</label>
但是,请确保复选框的标签以编程方式与复选框本身相关联,而不仅仅是在DOM中与其物理相邻。如果它们没有关联,则VoiceOver不会在整个复选框和标签周围绘制边框。
不正确:
<input type="checkbox" id="myid">
<label for="myid">i like puppies</label>
正确:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CC As Range
Dim CB As Range
Application.EnableEvents = False
If Not Intersect(Range("C16:C101"), Target) Is Nothing Then
For Each CC In Intersect(Range("C16:C101"), Target)
If CC.Value <> "" Then
CC.Offset(, -2).Value = Date & " "
CC.Offset(, -2).NumberFormat = "mm/dd/yy"
End If
Next CC
End If
Application.EnableEvents = True
Application.EnableEvents = False
If Not Intersect(Range("C16:C101"), Target) Is Nothing Then
For Each CC In Intersect(Range("C16:C101"), Target)
If CC.Value <> "" Then
CC.Offset(, -1).Value = Time & " "
CC.Offset(, -1).NumberFormat = "hh:mm"
End If
Next CC
End If
Application.EnableEvents = True
End Sub