【问题标题】:HTML img tag: title attribute vs. alt attribute?HTML img 标签:title 属性与 alt 属性?
【发布时间】:2009-05-16 13:00:06
【问题描述】:

我在浏览Amazon 时发现,在搜索“1TB”时,如果将鼠标光标悬停在星级评分图像上,则只能在使用 IE 时看到分数。如果您使用其他浏览器,则不会显示分数。

3.8 分和 4.2 分都显示为 4 星。当然,3.8 星对 4.2 星(76% 对 84% 的得分)可能会有所作为!

这是因为显示alt 文本的标准方式仅在用户关闭图形或“读出”浏览器时(例如,视障用户的浏览器)。但是,IE 会在悬停时显示它。

所以我认为如果亚马逊要不管用户的浏览器显示它,那么除了alt,还应该使用title。你同意吗?

【问题讨论】:

    标签: html accessibility alt


    【解决方案1】:

    它们用于不同的事情。 alt 属性用于而不是图像。如果图像无法在屏幕阅读器中显示。

    title 属性与图像一起显示,通常作为悬停工具提示。

    不应使用一个来“代替”另一个。每个都应该正确地使用,来做他们被设计做的事情。

    【讨论】:

    • 请注意,因为 HTML5 alt 属性是强制性的。在某些国家,如果你为国家机构做项目,不使用它甚至是非法的。而 jalf 所说的标题只是一个“设计”的东西。
    • 我不相信 - 我知道屏幕阅读器会读取 alt 而不是图像。
    • @jave.web HTML5 规范建议并指出了很多关于 alt 属性 w3.org/html/wg/drafts/html/master/… 的内容,但它并没有说它是“强制性的”。特别是当图像纯粹是装饰时,实际上根本不需要 alt 属性值。
    • @scunliffe 不在 HTML5 中使用 alt 属性意味着您的 HTML5 无效。如果图像纯粹是装饰 - 它不应该作为 <img> 标签应用 - 你应该使用 CSS 样式的 div ;)
    • @jave.web 您阅读的规范比指定的要多。他们强烈建议您包含一个 alt 属性,但也有例外w3.org/html/wg/drafts/html/master/… 并且没有强制要求您要求拥有一个 alt 属性。规范中没有任何地方表明它是“强制性的”或“必需的”。 - 事实上,他们列出了几种没有指定 alt 属性或故意留空的情况。
    【解决方案2】:

    我两个都去。标题将在所有浏览器中显示一个漂亮的工具提示,而在没有图像的浏览器中浏览时,alt 将给出描述。

    也就是说,我很想看看有多少“冲浪者”去“商店”浏览商品实际上已关闭图像或使用不支持图像的浏览器。我认为 90% 的人口使用 28k 调制解调器连接到 InterWeb 的日子已经过去了。

    【讨论】:

    • 使用 alt 不仅仅是为了在图像因带宽原因被抑制时显示一些东西。例如,一些专为视障人士设计的浏览器会广泛使用 alt。
    • ...但是:有时图像无法加载;并且有针对盲人的非视觉浏览器; safari 中的语音功能读取页面,包括来自图像的 alt 属性;搜索引擎优化;等等。很多充分的理由不假设 100% 图像显示。
    • @Anthony,ferocious - 同意。有各种嗯“边缘情况”,其中提供 alt 非常有帮助(我不建议放弃它) - 但是,如果有“有意义的信息”以工具提示的形式提供给用户,那么肯定应该成为标题属性 - 因为这就是它的用途。当我在上面说“边缘情况”时,我相信与 Firefox、Chrome、IE、Opera、Safari、Konqueror 等相比,使用 JAWS 或类似工具访问的用户的总百分比相当低。
    • ALT 标签是 SEO 友好的。应该和标题一样放置。
    • 如果您有残疾并且需要屏幕阅读器,我敢肯定您不会喜欢被称为“边缘案例”。
    【解决方案3】:

    alttitle 用于不同的事物,如前所述。 title 属性将提供工具提示,alt 也是一个重要属性,因为它指定了在图像无法显示时要显示的文本。 (在某些浏览器中,例如 firefox,您还会在 图片加载时看到此文本)

    我觉得应该说明的另一点是 alt 属性是验证为 XHTML 文档所必需的,而 title 属性只是一个“额外的选择”。

    【讨论】:

      【解决方案4】:

      那是因为它们有不同的用途,并且它们都应该被使用,而不是一个在另一个之上。

      “alt”是你们已经说过的,所以如果图像无法显示(无论出于何种原因),你可以看到它的全部内容,它还可以让视障人士理解图像是什么关于。

      “title”属性是正确显示带有图像标题的工具提示的属性。

      【讨论】:

        【解决方案5】:

        在我看来,替代文字是否应该始终描述图片中可见的内容,以防图片不显示。

        alt = 文字 [CS] 对于无法显示图像、表单或小程序的用户代理,此属性指定替代文本。替代文本的语言由 lang 属性指定。

        w3.org

        【讨论】:

          【解决方案6】:

          我认为 alt 是严格遵守 XHTML 所必需的。

          正如其他人所指出的,title 用于工具提示(很高兴拥有),alt 用于可访问性。两者都用没有错,但 alt 应该始终存在。

          【讨论】:

            【解决方案7】:

            ALT Attribute

            alt 属性在一组标记中定义(即,imgarea 以及可选的inputapplet),以允许您为对象提供等效的文本。

            文本等价物在以下常见情况下为您的网站及其访问者带来以下好处:

            • 如今,Web 浏览器可用于各种平台,具有不同的能力。有些根本无法显示图像或仅显示有限的一组图像;有些可以配置为不加载图像。如果您的代码在其图像中设置了 alt 属性,则这些浏览器中的大多数将显示您提供的描述而不是图像
            • 您的一些访问者无法看到图像,他们可能是盲人、色盲、弱视; alt 属性对于那些可以依靠它来很好地了解您页面上的内容的人来说非常有帮助
            • 搜索引擎机器人属于上述两个类别:如果您希望自己的网站得到应有的索引,请使用 alt 属性确保它们不会错过您网页的重要部分。

            Title Attribute

            此技术的目的是通过在title 属性中提供帮助信息,为用户在表单中输入数据时提供上下文相关帮助。帮助可能包括格式信息或输入示例。

            示例 1:限制搜索范围的下拉菜单
            搜索表单使用下拉菜单来限制搜索范围。下拉菜单紧邻用于输入搜索词的文本字段。搜索字段和下拉菜单之间的关系对于可以看到视觉设计的用户来说是很清楚的,它没有空间放置可见的标签。 title 属性用于标识select 菜单。 title 属性可以由屏幕阅读器朗读,也可以作为工具提示显示给使用屏幕放大镜的人。

            <label for="searchTerm">Search for:</label>
            <input id="searchTerm" type="text" size="30" value="" name="searchTerm">
            <select title="Search in" id="scope">
                ...
            </select> 
            

            示例 2:电话号码的输入字段
            网页包含用于在美国输入电话号码的控件,包括区号、交换和后四位数字三个字段。

            <fieldset>
                <legend>Phone number</legend>
                <input id="areaCode" name="areaCode" title="Area Code" type="text" size="3" value="" >
                <input id="exchange" name="exchange" title="First three digits of phone number" type="text" size="3" value="" >
                <input id="lastDigits" name="lastDigits" title="Last four digits of phone number" type="text" size="4" value="" >
            </fieldset> 
            

            示例 3:搜索功能 网页包含一个文本字段,用户可以在其中输入搜索词和一个标记为“搜索”的按钮,用于执行搜索。 title 属性用于标识表单控件,并且按钮位于文本字段之后,以便用户清楚地知道文本字段是应该输入搜索词的位置。

            <input type="text" title="Type search term here"/> <input type="submit" value="Search"/>
            

            示例 4:表单控件的数据表
            表单控件的数据表需要将每个控件与该单元格的列标题和行标题相关联。如果没有标题(或屏幕外标签),非视觉用户很难在表单中使用其辅助技术暂停并询问相应的行/列标题值。

            例如,调查表在第一行有四个列标题:问题、同意、未定、不同意。接下来的每一行在每个单元格中都包含一个问题和一个单选按钮,对应于三列中的答案选择。每个单选按钮的标题属性是答案选项(列标题)和问题文本(行标题)的串联,并以连字符或冒号作为分隔符。

            Img Element

            MDN 中提到的允许属性。

            • alt
            • crossorigin
            • decoding
            • height
            • importance(实验api)
            • intrinsicsize(实验性api)
            • ismap
            • referrerpolicy(实验性api)
            • src
            • srcset
            • width
            • usemap

            如您所见,img 元素中不允许使用 title 属性。我会使用alt 属性,如果需要,我会使用CSS(例如:伪类:hover)而不是title 属性。

            【讨论】:

            【解决方案8】:

            你不应该对 img 元素使用 title 属性。这背后的原因很简单:

            据推测,字幕信息是默认情况下应该对所有用户都可用的重要信息。如果是这样,则将此内容显示为图像旁边的文本。

            来源: http://blog.paciellogroup.com/2010/11/using-the-html-title-attribute/

            HTML 5.1 包含有关使用 title 属性的一般建议:

            目前不鼓励依赖 title 属性,因为许多用户代理没有按照本规范的要求以可访问的方式公开该属性(例如,需要鼠标等指针设备来显示工具提示,这不包括键盘-仅用户和仅触摸用户,例如拥有现代手机或平板电脑的任何人)。

            来源: http://www.w3.org/html/wg/drafts/html/master/dom.html#the-title-attribute

            谈到可访问性和不同的屏幕阅读器:

            • Jaws 10-11:默认关闭
            • Window-Eyes 7.02:默认开启
            • NVDA:不支持(无支持选项)
            • VoiceOver:不支持(无支持选项)

            因此,正如Denis Boudreau 所说的那样:显然不是推荐的做法

            【讨论】:

              【解决方案9】:

              ALT 属性适用于会使用屏幕阅读器的视障用户。如果任何图像标记中缺少 ALT,则将读取图像的整个 url。如果图片是网站设计的一部分,它们应该仍然有 ALT,但它们可以留空,这样就不必为网站的每个部分读取 url。

              【讨论】:

                【解决方案10】:

                我总是会同时使用alttitle 属性。它们各自用于不同的目的:alt 用于在丢失图像、图像下载缓慢或辅助技术中进行图像替换,而title 用于翻转交互和附加图像描述。

                此外,在 HTML5 中,您应该开始使用包含在 figure 中的新 HTML5 picture 元素,该元素具有完整的 WPA-ARIA 属性,以提高可访问性,并支持辅助技术、屏幕读者之类的。因为许多旧版浏览器不支持此元素...但是会优雅地降级...我现在推荐以下 HTML 设计模式用于 HTML 中的图像:

                <figure aria-labelledby="picturecaption2">
                    <picture id="picture2">
                        <source srcset="image.webp" type="image/webp" media="(min-width: 800px)" />
                        <source srcset="image.gif" type="image/gif" />
                        <img id="image2" style="height:auto;max-width: 100%;" src="image.jpg" width="255" height="200" alt="image:The World Wide Web" title="The World Wide Web" loading="lazy" no-referrer="no-referrer" onerror="this.onerror=null;" />
                    </picture>
                    <figcaption id="picturecaption2"><small>"My Cool Picture" [<a href="http://creativecommons.org/licenses/" target="_blank">A License</a>] , via <a href="https://commons.wikimedia.org/wiki/" target="_blank">Wikimedia Commons</a></small></figcaption>
                </figure>
                

                上面的代码除了alttitle 之外还有许多额外的“好处”,包括ARIA 属性、对WebP 的支持、支持更高分辨率图像的媒体查询以及支持旧图像格式的不错的后备模式。它展示了一个完全装饰的图像示例,该示例使用了新技术,同时仍支持具有渐进式设计模式的旧技术。

                20 多年来,许多开发人员一直在使用这种模式来处理 IE 和其他问题。所以这不是新知识。它刚刚被不愿从过去学习的新开发人员重新发现。

                记住...永远支持老浏览器!

                【讨论】:

                  【解决方案11】:

                  不,我认为alt 更好,因为该属性的目的是在无法查看图像的情况下提供“替代”文本(无论是图像丢失还是浏览器本身无法查看)显示它)。

                  【讨论】:

                  • 所以我觉得你不在乎是3.8星还是4.2星?
                  【解决方案12】:

                  ASP.NET MVC 的 MVCFutures 决定两者兼而有之。事实上,如果您提供“alt”,它会自动为您创建一个具有相同值的“title”。

                  我手头没有源代码,但通过谷歌快速搜索找到了一个测试用例!

                      [TestMethod]
                      public void ImageWithAltValueInObjectDictionaryRendersImageWithAltAndTitleTag() {
                          HtmlHelper html = TestHelper.GetHtmlHelper(new ViewDataDictionary());
                          string imageResult = html.Image("/system/web/mvc.jpg", new { alt = "this is an alt value" });
                          Assert.AreEqual("<img alt=\"this is an alt value\" src=\"/system/web/mvc.jpg\" title=\"this is an alt value\" />", imageResult);
                      }
                  

                  【讨论】: