简体   繁体   English

产品列表图像替代文本可访问性的最佳做法(和法律)是什么?

[英]What is best practice (and legal) for product listing image alt text for accessibility?

I'm trying to determine what structure is best with regard to typical e-commerce product listing pages.我正在尝试确定哪种结构最适合典型的电子商务产品列表页面。 I have reviewed WCAG and other sources and have not found a definitive solution as of yet.我已经查看了 WCAG 和其他来源,但到目前为止还没有找到最终的解决方案。 A typical product listing contains an image and a product name, both linked to the product details page.典型的产品列表包含图像和产品名称,两者都链接到产品详细信息页面。 There are several patterns that come to mind...我想到了几种模式......


Single link with empty alt text带有空 alt 文本的单个链接

My thought is that it is best to combine both of these into the same <a> tag and then set alt="" on the image therefor the product name will describe the entire purpose of the link.我的想法是,最好将这两个组合到同一个<a>标签中,然后在图像上设置alt="" ,这样产品名称将描述链接的全部目的。

Method 1方法一

<a href="/my-product">
    <img src="image.jpg" alt="">
    <span class="product-name">Squeaky Fox Dog Toy</span>
</a>

The benefit here is it keeps the interactive elements clean and easy to navigate by keyboard and in screen reader links lists (like in the Rotor in VoiceOver).这样做的好处是它使交互元素保持干净,并且易于通过键盘和屏幕阅读器链接列表(如 VoiceOver 中的转子)进行导航。


Duplicate link and product name重复的链接和产品名称

Another very common pattern I've seen in use on high profile sites that have been through accessibility lawsuits and subsequent remediation is to have separate links for both...我在经过可访问性诉讼和后续补救的知名网站上看到的另一种非常常见的模式是为两者提供单独的链接......

Method 2方法二

<a href="/my-product"><img src="image.jpg" alt="Squeaky Fox Dog Toy"></a>
<a href="/my-product" class="product-name">Squeaky Fox Dog Toy</a>

However, this seems like a very bad experience for keyboard users who now have to tab through both elements just to get to the product they want.然而,这对于键盘用户来说似乎是一种非常糟糕的体验,他们现在必须通过 Tab 键浏览这两个元素才能获得他们想要的产品。 It also seems terrible for screen reader users who have to listen to duplicate product names as they try and find what they want.对于屏幕阅读器用户来说,这似乎也很糟糕,因为他们在尝试查找所需内容时必须听取重复的产品名称。


More descriptive alt text on the image图像上更具描述性的替代文字

One concern I have with the first two methods is that they may not completely meet WCAG 1.1.1 Non-text Content - Level A .我对前两种方法的一个担忧是它们可能不完全符合WCAG 1.1.1 非文本内容 - A 级 Does the product name alone "serve the equivalent purpose"?产品名称本身是否“起到同等作用”? For these same images on the product detail page I would typically suggest being more descriptive to give the user more information that a visual user is seeing about what is in the image.对于产品详细信息页面上的这些相同图像,我通常会建议更具描述性,以便为用户提供视觉用户看到的有关图像内容的更多信息。 The product name will rarely satisfy relaying enough information in that regard.在这方面,产品名称很少能满足传递足够信息的要求。 However, on the listing page, I feel like doing that would put undue burden on screen reader users who now have to listen through descriptions of images when all they want is to see what products are available and select one.然而,在列表页面上,我觉得这样做会给屏幕阅读器用户带来不应有的负担,他们现在必须仔细听图像描述,而他们只想看看有哪些产品可用,select 一个。 That level of details seems like it would only be warranted on the actual product detail page.这种详细程度似乎只能在实际产品详细信息页面上得到保证。

Method 3方法三

<a href="/my-product"><img src="image.jpg" alt="Red fox stuffed dog toy with white braided rope arms"></a>
<a href="/my-product" class="product-name">Squeaky Fox Dog Toy</a>

or或者

Method 4方法四

<a href="/my-product">
    <img src="image.jpg" alt="Red fox stuffed dog toy with white braided rope arms">
    <span class="product-name">Squeaky Fox Dog Toy</span>
</a>

My Questions我的问题

So, I guess I really have three questions...所以,我想我真的有三个问题......

  1. Which method(s) are best for users?哪种方法最适合用户?
  2. Which method(s), if any, would NOT satisfy WCAG Level AA and therefor not comply with laws in the US, EU, etc.哪些方法(如果有)不满足 WCAG AA 级,因此不符合美国、欧盟等的法律。
  3. Would the image in a Product Listing Page be classified as "decorative"?产品列表页面中的图像会被归类为“装饰性”吗?

My suspicion is that Method 1 would be the best.我怀疑方法 1 是最好的。 The only documentation I found so far supporting this is on the W3C's site in the section about Decorative image as part of text link ... assuming the PLP image can be classified as "decorative".到目前为止,我发现的唯一支持这一点的文档是在 W3C 网站上关于装饰图像作为文本链接的一部分的部分......假设 PLP 图像可以归类为“装饰”。

Great questions and you've obviously done a lot of research.很好的问题,你显然做了很多研究。

Let me start with your second question让我从你的第二个问题开始

  1. Which method(s), if any, would NOT satisfy WCAG Level AA and therefor not comply with laws in the US, EU, etc.哪些方法(如果有)不满足 WCAG AA 级,因此不符合美国、欧盟等的法律。

All of your ideas would technically pass WCAG, which makes your first question more important - what's best for the user.您的所有想法在技术上都会通过 WCAG,这使您的第一个问题更加重要 - 什么对用户最好。 WCAG is a minimum standard to create applications that are accessible to the widest user base but they are indeed minimum standards. WCAG 是创建可供最广泛用户群访问的应用程序的最低标准,但它们确实是最低标准。 You can have a very unusable website that is accessible so you want to look beyond WCAG.您可以拥有一个非常不可用但可以访问的网站,因此您想超越 WCAG。

Also, WCAG can be very subjective.此外,WCAG 可能非常主观。 With regards to WCAG 1.1.1 that you mentioned, one person might say your examples fail while another person might say they pass.关于您提到的 WCAG 1.1.1,一个人可能会说您的示例失败,而另一个人可能会说他们通过了。 There is no official definition on what " serves the equivalent purpose " means.没有关于“服务于同等目的”的含义的官方定义。 It's a subjective decision.这是一个主观的决定。

I can find pros and cons with all your solutions so here are a few things to think about.我可以找到您所有解决方案的优缺点,因此这里有一些需要考虑的事项。

Method 1: You consider the product picture as decorative so it doesn't have alt text.方法 1:您将产品图片视为装饰性的,因此没有替代文字。 (Well, it has alt text but it's the empty string, which is fine. Your could also have alt by itself without the ="" and it would mean the same thing.) One problem, though, is if you have a user with lower bandwidth and perhaps images don't load. (好吧,它alt 文本,但它是空字符串,这很好。您也可以单独使用alt而没有="" ,这意味着同样的事情。)但是,一个问题是,如果您有一个用户较低的带宽,也许图像不会加载。 Or image loading might be turned off.或者图像加载可能已关闭。 Or your URL to the image location is bad.或者你的URL到图片位置不好。 You'd then have an empty box where the picture should be.然后,您将在图片所在的位置有一个空框。 You'd still have text in the link so it'll be announced ok by screen readers and people with vision will see the text, but the user might wonder what belongs in that box.您的链接中仍然有文本,因此屏幕阅读器会宣布它是正确的,有远见的人会看到文本,但用户可能想知道该框中属于什么。 With descriptive alt text, the alt text would be displayed near the image.使用描述性替代文本,替代文本将显示在图像附近。 Each browser tends to show missing images differently.每个浏览器往往以不同的方式显示丢失的图像。

Method 2: It's not the best experience for keyboard or screen reader users but I'm not sure I'd say it's a "very bad" experience.方法 2:对于键盘或屏幕阅读器用户来说,这不是最佳体验,但我不确定我会说这是“非常糟糕”的体验。 Many (sighted) keyboard users can just tab twice and it's not a big deal.许多(有视力的)键盘用户只能按Tab键两次,这没什么大不了的。 I often have to press and hold tab to get through lots of tab stops, but I'm a sighted keyboard user so it doesn't bother me.我经常需要按住 Tab 键才能通过许多制表位,但我是一个有视力的键盘用户,所以它不会打扰我。 But some assistive technology is more difficult to get through multiple tab stops, such as a sip and puff device , so reducing tab stops is always a good thing but it's not required by WCAG.但是一些辅助技术更难通过多个制表位,例如sip and puff device ,因此减少制表位始终是一件好事,但 WCAG 并不要求这样做。

Method 3: Similar to method 2 except the alt text is more descriptive.方法 3:方法 2类似,但替代文本更具描述性。 You have to start weighing the options of being succinct in the alt text (or empty alt text) to being (too) descriptive.您必须开始权衡替代文本(或空替代文本)中的简洁选项和(过于)描述性的选项。 It's a subjective decision and often requires some usability testing.这是一个主观决定,通常需要进行一些可用性测试。

Method 4: Improves upon method 2 by only having one tab stop but now it causes both the alt text and the link text to be announced so the link text might be too wordy for the screen reader user.方法 4:通过仅使用一个制表位来改进方法 2 ,但现在它会同时显示替代文本和链接文本,因此链接文本对于屏幕阅读器用户来说可能过于冗长。

I often use a pattern close to your method 4 but I don't want the alt text read with the link text so I use aria-labelledby .我经常使用与您的方法 4接近的模式,但我不希望使用链接文本读取替代文本,因此我使用aria-labelledby (I use aria-labelledby when the text I want to announce is already on the screen so I can just refernece it, whereas aria-label is a literal string and I don't like to repeat the text in the aria-label and the text on the screen.) (当我要宣布的文本已经在屏幕上时,我使用aria-labelledby labelledby,所以我可以直接引用它,而aria-label是一个文字字符串,我不喜欢重复aria-label中的文本屏幕上的文字。)

Method 5:方法五:

<a href="/my-product" aria-labelledby="foxy">
    <img src="image.jpg" alt="Red fox stuffed dog toy with white braided rope arms">
    <span id="foxy" class="product-name">Squeaky Fox Dog Toy</span>
</a>

Some benefits of method 5 :方法 5的一些好处:

  • one tab stop一个制表位
  • link text announcement for screen readers is not too wordy屏幕阅读器的链接文本公告不会太罗嗦
  • alt text will be displayed if image can't be loaded如果无法加载图像,将显示替代文本
  • screen reader user can still navigate by <img> elements (the G key for many screen readers) and hear the description屏幕阅读器用户仍然可以通过<img>元素(许多屏幕阅读器的G键)导航并听到描述

I'm sure you can poke holes in method 5 too.我相信您也可以在方法 5中戳洞。 There will always be downsides to almost every solution.几乎所有解决方案都会有缺点。

Update I took so long to type my answer that you had added a third question to your OP.更新我花了很长时间才输入我的答案,以至于您在 OP 中添加了第三个问题。 Whether an image is decorative or not, whether it's in a product listing page (PLP) or product details page (PDP), is still somewhat subjective.图像是否具有装饰性,无论是在产品列表页面 (PLP) 还是产品详细信息页面 (PDP) 中,仍然有些主观。 As a best practice (not required by WCAG), one would think that a PDP would have more details about the product and thus might need very descriptive text on the images.作为最佳实践(WCAG 不要求),人们会认为 PDP 会包含更多关于产品的详细信息,因此可能需要在图像上添加非常具有描述性的文本。 But those details could also exist in the product text and thus not be needed on the actual images.但这些细节也可能存在于产品文本中,因此实际图像上不需要。

Which method(s) are best for users?哪种方法最适合用户?

Method 1 out of the options given is best.给出的选项中的方法 1 是最好的。

Which method(s), if any, would NOT satisfy WCAG Level AA and therefor not comply with laws in the US, EU, etc.哪些方法(如果有)不满足 WCAG AA 级,因此不符合美国、欧盟等的法律。

None of them would fail WCAG as such.他们都不会让 WCAG 失败。

However as you have pointed out 2 and 3 result in duplication of effort for keyboard users and links to the same location having different names, which is not a fail under any success criterion but is highly recommended.然而,正如您所指出的,2 和 3 会导致键盘用户重复工作,并链接到具有不同名称的同一位置,这在任何成功标准下都不算失败,但强烈推荐。

Would the image in a Product Listing Page be classified as "decorative"?产品列表页面中的图像会被归类为“装饰性”吗?

Yes in scenario 1 and 4.在场景 1 和 4 中是。

Expansion of the answers given扩展给出的答案

All 4 of the examples given would "pass" WCAG.给出的所有 4 个示例都将“通过”WCAG。 However they offer very different experiences.然而,它们提供了截然不同的体验。

So the question is what things are we considering for accessibility?所以问题是我们在考虑可访问性方面有哪些?

The first is Keyboard operability.首先是键盘操作性。 Examples 2 and 3, as you pointed out result in duplication of focus stops for the same item.正如您所指出的,示例 2 和示例 3 会导致同一项目的焦点停止重复。 So we should avoid them.所以我们应该避免它们。

The second thing is link purpose.第二件事是链接目的。 Yet again examples 2 and 3 are not great here as we have 2 links to the same place on the same page that have different accessible labels / text that assistive tech will use.然而,示例 2 和 3 在这里也不是很好,因为我们有 2 个链接指向同一页面上的同一位置,它们具有辅助技术将使用的不同可访问标签/文本。

So we can rule out options 2 and 3 for best practices.因此,我们可以排除选项 2 和 3 以获得最佳实践。

So what about options 1 and 4?那么选项 1 和 4 呢?

Well as the items are located within a hyperlink we want the link text (the accessible name for those links) to be descriptive of the product page we are going to visit.由于项目位于超链接,我们希望链接文本(这些链接的可访问名称)能够描述我们将要访问的产品页面。

As such option one would read: "link: Squeaky Fox Dog Toy" and the second link would read "link: (image) Red fox stuffed dog toy with white braided rope arms, Squeaky Fox Dog Toy"作为这样的选项,一个将显示为:“链接:Squeaky Fox Dog Toy”,第二个链接将显示为“链接:(图片)带有白色编织绳臂的红狐毛绒狗玩具,Squeaky Fox Dog Toy”

The second option results in duplication of information so is not as desirable as the first option.第二种选择会导致信息重复,因此不如第一种选择理想。

So we land on option 1.所以我们选择了选项 1。

The only consideration you now have is whether that link text describes the product sufficiently.您现在唯一要考虑的是链接文本是否充分描述了产品。 Now if you sold multiple dog toys (different product types) then you need text that describes them as such ie "plastic dog toys" and "fluffy dog toys".现在,如果您销售多个狗玩具(不同产品类型),那么您需要描述它们的文字,即“塑料狗玩具”和“毛茸茸的狗玩具”。

If you sell different coloured products and they all had their own page (so you don't have a colour picker on the end page, they are listed as separate items) then you would need to describe the colour there too.如果您销售不同颜色的产品并且它们都有自己的页面(因此您在最后一页没有颜色选择器,它们被列为单独的项目)那么您也需要在那里描述颜色。 "Red fluffy dog toy", "blue fluffy dog toy". “红色毛绒狗玩具”、“蓝色毛绒狗玩具”。

Essentially you need to provide enough information that each product link is easily identifiable as to where it leads (the purpose of the link itself).从本质上讲,您需要提供足够的信息,以便每个产品链接都能轻松识别其指向的位置(链接本身的目的)。

This is where judgement comes into play, provide enough information to describe the product generally in a unique way on the page, not so much information that browsing that page becomes problematic due to 100 products with 200 word link text.这是判断力发挥作用的地方,提供足够的信息以在页面上以独特的方式描述产品,而不是因为 100 个产品和 200 个单词的链接文本而导致浏览该页面出现问题的信息。

So in the example given the "balance" would be something like "Red fox stuffed dog toy", and then describe the appearance in far more detail on the product page, wither in the description or in the product image alt attributes.因此,在给出的示例中,“平衡”将类似于“红狐狸毛绒狗玩具”,然后在产品页面上更详细地描述外观,在描述或产品图片 alt 属性中使用。

Option 5 - if you don't have text at all.选项 5 - 如果您根本没有文本。

It is worth noting that the last option for a product page is no text at all.值得注意的是,产品页面的最后一个选项是根本没有文本。 Just an image inside a link.只是链接中的图像。 The following is also valid HTML and accessible as the alt text will be used as the link text (not if an image contains any text at all that should all appear in the alt attribute).以下内容也是有效的 HTML 并且可以访问,因为替代文本将用作链接文本(如果图像包含所有应该出现在alt属性中的文本则不行)。

<a href="/my-product">
    <img src="image.jpg" alt="Red fox stuffed dog toy with white braided rope arms">
</a>

Extra powers额外权力

Sometimes you may not to be able to control the content of the link itself (maybe alt text is managed centrally or you have a description for each item as well that would make the link text far too verbose.)有时您可能无法控制链接本身的内容(也许替代文本是集中管理的,或者您对每个项目都有描述,这会使链接文本过于冗长。)

In that case you can fall-back to WAI-ARIA (always a last resort) and provide the link text with that:在这种情况下,您可以回退到 WAI-ARIA(总是最后的手段)并提供链接文本:

<a href="/my-product" aria-label="DESCRIPTION THAT OVERRIDES ALL CONTENT">
    <img src="image.jpg" alt="Red fox stuffed dog toy with white braided rope arms">
    <span class="product-name">Squeaky Fox Dog Toy</span>
    <p class="long-and-verbose-description">Way too much information for a link that is overridden by the aria-label</p>
</a>

Relevant Guidance相关指引

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM