[英]SVG text accessibility
我有以下结构
<h2> <svg viewBox='-5 -40 100 50'> <!-- some filters that get applied on the elements below --> <clipPath id='c'> <text id='t'>Scooby</text> </clipPath> <g clip-path='url(#c)'> <rect x='-5' y='-40' width='100%' height='100%'/> <path/> </g> <use xlink:href='#t'/> <use xlink:href='#t'/> </svg> </h2>
我怎样才能确保text
里面clipPath
(“史酷比”)获取屏幕阅读器和只有一次见过?
我知道屏幕阅读器应该读取SVG text
,但是当它在clipPath
元素中时仍然是这样吗? 那么use
它的副本呢?
我正在使用这种结构,以便在标题文本上获得一些奇特的效果(想想这样的东西 )(并抛弃当前使用的.jpg图像)。
使用aria-hidden
从屏幕阅读器中删除SVG,并使用aria-labelledby
为h2
定义标签。
<h2 aria-labelledby="t">
<svg viewBox='-5 -40 100 50' aria-hidden="true">
<!-- some filters that get applied on the elements below -->
<clipPath id='c'>
<text id='t'>Scooby</text>
</clipPath>
<g clip-path='url(#c)'>
<rect x='-5' y='-40' width='100%' height='100%'/>
<path/>
</g>
<use xlink:href='#t'/>
<use xlink:href='#t'/>
</svg>
</h2>
添加aria-hidden
以抑制特定元素的屏幕阅读,它只会读取“Scooby”一次:
<h2>
<svg viewBox='-5 -40 100 50'>
<!-- some filters that get applied on the elements below -->
<clipPath id='c'>
<text id='t'>Scooby</text>
</clipPath>
<g clip-path='url(#c)'>
<rect x='-5' y='-40' width='100%' height='100%'/>
<path/>
</g>
<use aria-hidden="true" xlink:href='#t'/>
<use aria-hidden="true" xlink:href='#t'/>
</svg>
</h2>
aria-label
属性适用于屏幕aria-label
不到文本的情况
<h2 aria-label="Scooby">
<svg> ... </svg>
<h2>
或者,我相信大多数屏幕阅读器都会使用<title>
SVG元素。
<h2>
<svg>
<title>Scooby logo</title>
...
</svg>
<h2>
您还可以选择使用其他ARIA属性,例如aria-labelledby
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.