編輯2020年:
目前 display:none
或 visibility:hidden
似乎普遍導(dǎo)致內(nèi)容在視覺上和屏幕閱讀器上不可見(在Firefox和Chrome中使用NVDA進(jìn)行測(cè)試),所以下面的陳述是無(wú)效的。
目前,將內(nèi)容移出屏幕似乎是為屏幕閱讀器用戶提供內(nèi)容的唯一方式,也請(qǐng)參閱以下表格:
http://stevefaulkner.github.io/HTML5accessibility/tests/hidden-2016.html
除非在接受的答案中另有說明,至少 Chromevox1 和 NVDA2 也會(huì)讀取具有 display:none
或 visibility:hidden
CSS 屬性的元素,如果設(shè)置了 aria-hidden=false
。然而,目前只有在 Chrome(65)中,而不是在 Firefox 或 Edge 中(根據(jù)我的測(cè)試)。
所以(目前僅在 Chrome 中可行),也可以像這樣做:
<h1 aria-hidden="false" style="display: none;">僅供屏幕閱讀器使用的標(biāo)題</h1> <h1 aria-hidden="false" style="visibility: hidden;">僅供屏幕閱讀器使用的第二個(gè)標(biāo)題</h1> <h1 aria-hidden="true">僅供屏幕使用的標(biāo)題</h1>
其中 Chromevox 和 NVDA 會(huì)讀取第一個(gè)和第二個(gè)標(biāo)題。 還請(qǐng)參閱:https://jsfiddle.net/4y3g6zr8/6/
如果所有瀏覽器都同意這種行為,那將是比其他解決方案中提出的所有 CSS 技巧更清潔的解決方案。
1Chromevox https://chrome.google.com/webstore/detail/chromevox/kgejglhpjiefppelpmljglcjbhoiplfn 2NVDA https://www.nvaccess.org/
關(guān)于alt文本,你是正確的,它只適用于圖像。但是你可以使用aria-label來(lái)替代非圖像元素的alt屬性,如下所示:
aria-label
(不要與aria-labelledby
混淆,后者從另一個(gè)元素的文本中提取可訪問名稱)用于為元素添加屏幕外描述性內(nèi)容,類似于alt=
屬性為圖像添加屏幕外描述性內(nèi)容,當(dāng)圖像無(wú)法顯示時(shí)使用。
不同之處在于,aria-label
可以用于非圖像元素。
<div aria-label="測(cè)試A"><p aria-hidden="true">測(cè)試B</p></div> <!-- 結(jié)果(屏幕閱讀器):測(cè)試A 結(jié)果(常規(guī)):測(cè)試B -->
添加aria-hidden
屬性可以隱藏內(nèi)部文本。
.screenreader { position: absolute !important; /* 脫離文檔流 */ height: 1px; width: 1px; /* 幾乎折疊 */ overflow: hidden; clip: rect(1px 1px 1px 1px); /* 僅IE 7+支持不帶逗號(hào)的clip */ clip: rect(1px, 1px, 1px, 1px); /* 其他所有瀏覽器 */ }
裁剪用于完全隱藏1像素 x 1像素的元素,否則它仍然會(huì)在屏幕上可見。
.screenreader { position: absolute; left:-9999px; } <div>星期三<span class="screenreader">,2014年9月24日</span></div>
.screenreader { text-indent: -5000px; }
實(shí)際的縮進(jìn)值并不重要,只要它超出頁(yè)面布局的范圍即可。示例將內(nèi)容向左移動(dòng)5,000像素。
此解決方案僅適用于完整的文本塊。它在錨點(diǎn)、表單、從右到左的語(yǔ)言或與其他文本混合的特定內(nèi)聯(lián)文本上效果不佳。
這些樣式將隱藏文本,使其對(duì)所有用戶都不可見。文本從頁(yè)面的視覺流中移除,并被屏幕閱讀器忽略。如果要讓內(nèi)容被屏幕閱讀器讀取,請(qǐng)不要使用此CSS。但是,如果要讓內(nèi)容不被屏幕閱讀器讀取,請(qǐng)使用它。
與上述相同,因?yàn)闆]有高度或?qū)挾鹊脑貢?huì)從頁(yè)面流中移除,大多數(shù)屏幕閱讀器將忽略此內(nèi)容。HTML的寬度和高度可能會(huì)產(chǎn)生相同的結(jié)果。如果要讓內(nèi)容被屏幕閱讀器讀取,請(qǐng)不要將內(nèi)容大小設(shè)置為0像素。