您想隐藏页面上的某些内容,因此
.hide {
display: none;
}
但是等等!通过将该类应用于元素,您立即使该内容对屏幕阅读器“不可访问”。您可能一直都知道这一点,但即使这样,这个毒苹果仍然会时不时地潜入我们的代码中。
我不想重新讨论所有细节。如果您还不了解这一点,最好的办法是阅读 Aaron Gustafson 在 A List Apart 上发表的 “Now You See Me”,以了解这方面的内容。
鼓励自己做正确事情的一种方法是创建更合适的类名。您的常规隐藏类应该将内容放置在屏幕外,这仍然使其对屏幕阅读器可访问
.hide {
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
我在这里使用 `!important`,因为如果您已经费心为某事物添加了“隐藏”类,您可能真的想这样做,而且不想太费神地考虑特异性值的强度是否足够。而且,如果您知道需要将某事物 `display: none`,该类应该帮助您理解它
.remember-this-will-NOT-be-read {
display: none !important;
}
另一个可访问隐藏选项来自一些 Snook 研究 和 HTML5 模板
.visuallyhidden {
position: absolute;
overflow: hidden;
clip: rect(0 0 0 0);
height: 1px; width: 1px;
margin: -1px; padding: 0; border: 0;
}
好的,您明白了。当您完全控制类名并且只需应用和删除它们时,这非常容易。但当使用应用了自己的 CSS 的 JS 库时,事情会变得有点棘手。例如,在 jQuery 中,在您 `$.slideUp()` 之后,您将有一个 `display: none` 在内联 CSS 中需要处理。是的,屏幕阅读器运行 JavaScript,是的,这仍然是一个问题。
同样,Aaron Gustafson 在那里为我们提供了帮助,他建议在滑动完成后应用可访问的类名,然后通过向另一个方向滑动来删除 `display: none`。
var $button = $('#myButton'),
$text = $('#myText'),
visible = true;
$button.click(function() {
if (visible) {
$text.slideUp('fast',function() {
$text.addClass('hide')
.slideDown(0);
});
} else {
$text.slideUp(0,function() {
$text.removeClass('hide')
.slideDown('fast');
});
}
visible = !visible;
});
这是一个演示
查看代码笔 使用 jQuery 隐藏 由 CSS-Tricks (@css-tricks) 在 CodePen 上。
现在,我们有了必要的工具来停止使用 `display: none` 并开始使用更可访问的“隐藏”方法。

常见问题解答页面
如果您在点击问题之前隐藏答案,请使用可访问的类名进行隐藏。小心不要 `$.hide()` 然后 `$.slideToggle()`,这还不够好!

标签
使用 `placeholder` 文本作为标签替换很诱人(尤其是在一些浏览器改进了留置文本直到您真正输入的 UX 之后),但不要 `display: none` 或删除 `label`。我最近听到一个令人心碎的故事,一个盲女孩试图申请大学,表格中缺少 `label`,所以她不知道应该在哪些字段中输入什么。因此,如果您要使用 `placeholder` 文本作为标签替换,请对标签使用可访问的隐藏技术。

标签
仅仅因为内容面板不是“当前活动”的,并不意味着它应该不可访问。使用可访问的隐藏技术将其隐藏。或者,您可能根本不需要。如果所有面板的高度相同,您可以通过调整 `z-index` 来切换哪个面板可见。

@media 查询
在 OS X 中打开 Voice Over 并使用 Safari 是一个屏幕阅读器。现在想象一下,Safari 窗口打开了一个非常窄的宽度,并且页面有一些用于处理较小视口的 @media 查询。假设该 @media 查询使用 `display: none` 隐藏了一些内容,以便更好地在视觉上适应空间。这对可访问性来说可能是好是坏。您是否隐藏了许多对页面不重要的内容?或者您是否隐藏了一些有用的内容,这些内容是使用屏幕阅读器的人应该像往常一样访问的?
我不是专家
这篇文章的全部内容基于这样的前提:`display: none` 对可访问性不利。它不是基于我对屏幕阅读器和通用可访问性的深入而透彻的理解。如果您有更多内容要补充,需要更正的地方,或要分享的个人经验,请务必这样做。
我之前不知道这一点,非常棒的文章!
很可惜,像占位符这样的东西在规范中没有得到更好的实现,我们很幸运有专家指出这个问题并提供解决方案。我想我们得等很长时间才能拥有自己的 CSS 属性来实现这一点,应该使用 `display: screenreader;` 或者类似的东西。
太可惜了,没有一种针对屏幕阅读器的媒体查询,可以将这些值切换为 `block`。
使用
top: -9999px;
left: -9999px;
http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
H5BP 有一个辅助类可以做到这一点
https://github.com/h5bp/html5-boilerplate/blob/master/css/style.css#L260
啊,是的!谢谢!已添加到文章中。
但是 `display:none;` 是一个非常有用的属性!
是的,毫无疑问!这正是这篇文章的意义所在!讨论滥用它的负面影响!
为什么要隐藏东西,但仍然希望它们被阅读?在我看来,这听起来像是自相矛盾。
关于标签示例,为什么不确保标签可通过键盘访问(所以不要只是添加点击处理程序,使用/创建可聚焦的标签元素,并为其添加键盘处理程序,并检查您的标签顺序是否合理)。添加一些 WAI-ARIA 角色,现代浏览器和屏幕阅读器应该能够像有视觉障碍的人一样使用它们。
这涉及到一个更重要的观点:不要认为“屏幕阅读器用户”和“普通用户”涵盖了所有人。如果您只使用悬停来隐藏/显示内容,那么您就已经做错了(以及您如何隐藏内容并不像确保没有鼠标的人能够取消隐藏内容那么重要)。
我同意。
隐藏东西,但实际上并没有隐藏,这有什么意义?我从来没有见过屏幕阅读器,也许有原因,但对我来说,问题更多是如何在屏幕阅读器上取消隐藏东西
主要内容部分的标题,以创建更完整的标题层次结构,用于非 ARIA 感知辅助技术,例如 Gijs?
跳过链接?(虽然只有在大屏幕上才应该允许它们在屏幕外。)
仅举两个例子。
还有 Vexal,如果你从来没有见过屏幕阅读器(或者我认为任何其他辅助技术),那么你真的需要尝试一下。对于任何前端开发人员来说,没有理由不花一点时间使用 NVDA、Orca、VoiceOver,甚至 JAWS 的评估版本。
“为什么你要隐藏东西,却仍然希望它们被阅读?在我看来这听起来像是自相矛盾的。”
我猜这是为了强调观点而故意装糊涂?
人们在界面中隐藏东西,这样它们就可以作为一些用户交互的结果显示出来。
Ade:很好的例子。然而,这些例子背后的原因是为屏幕阅读器用户提供额外的隐藏内容,而正常用户是看不到这些内容的。博客文章中的例子并非如此。
Dave:故意装糊涂 - 不,这是一个严肃的问题。如果你隐藏东西是为了在用户交互后重新显示,那么只需要确保屏幕阅读器用户可以像其他人一样显示它们。大多数屏幕阅读器都支持 JS;如果它们不支持,它们应该(出于这些特定元素的目的)被视为与没有 JS 的任何人一样,并且内容可能不应该被隐藏在首位。
这方面的另一个问题是,应用了
display: none;
的元素会被从 DOM 加载过程中排除。如果有人在一个未显示的内联图像上绑定一个加载事件,或者想要获取一个未显示的元素的尺寸,那么这将是不切实际的。
Спасибо, очень интересный обзор, но из него вытекает немалый объем работы по переписыванию script`s и css`s.
这正是我想说的!
Google 翻译
谢谢,非常有趣的评论,但它意味着要重写脚本 `s 和 css` s,需要相当大的工作量。
如果你要隐藏 FAQ 页面上的文本,目的是用 JS 显示它,你应该也用 JS 隐藏它,否则,使用常规 CSS 启用浏览器但 JS 禁用的用户将永远无法看到文本,导致 FAQ 页面无法使用!
很好的观点。在 DOM 加载后(在视觉上)移除它。
不是要偏离主题,但为什么这个网站上单行注释那么多?
一个不错的选择是使用 CSS 隐藏需要隐藏的元素,但在 js 设置的类下。
CSS
.js .visuallyHide {
position: absolute;
overflow: hidden;
clip: rect(0 0 0 0);
height: 1px; width: 1px;
margin: -1px; padding: 0; border: 0;
}
JavaScript
$("html").addClass("js");
谢谢,Chris,这样的文章让网络更进一步 :-)
干杯!
HTML5 的占位符并不意味着要替代标签。它更多的是为了给出一个关于字段中期望内容的示例。例如
电子邮件地址:[email protected]
电话:(000) 999 9999
非常好的观点!
如果你使用 less/sass,你甚至不需要在 html 中添加 .hide(我使用 .hidden)类,但你可以将它们用作 mixin。这样可以避免你使用 !important 的麻烦(和不适感),而且如果设计发生变化,你以后也不需要进行后端更改。
至于没有 tab 和键盘访问,这实际上不会帮助屏幕阅读器用户。Display:none 是一个不好的做法,可耻的是 jQuery 和其他库都依赖于它。
你为什么认为 tab/键盘访问对屏幕阅读器用户没有帮助?
不幸的是,这是令人悲哀的事实。另一个令人悲哀的事实是缺乏标准的屏幕阅读器。例如,即使使用 display: none,标签也会在 Jaws(适用于 Windows)中被读取。但这是一个需要注意的重点。谢谢
简单、直接、非常有启发性!谢谢!
不要错误地假设屏幕阅读器没有“拥有”javascript。
屏幕阅读器可能正在浏览器之上读取屏幕。在这种情况下(使用 javascript)使用 display:none 隐藏某些内容是有意义的,就像你的 FAQ 示例一样。
浏览器可以 tab 到 FAQ 问题,读取它,然后按回车键打开它(并使用 #锚点)跳到答案的开头。如果他们不想看答案,他们会继续浏览列表中的下一个问题,而不是不得不阅读 *所有问题* 和 *所有答案*,就像 .hide 答案被推离屏幕时会发生的那样。
注意 - 如果你真的喜欢,将项目默认设置为 display:none,然后立即在一个名为 noscript.css 的文件中覆盖它。使用 javascript 删除 noscript.css 文件。这样可以避免在 js 在 DOM 就绪时启动之前,所有打开的项目都显示出来。
这是一个很好的例子,说明了网络开发可能是多么棘手。你可能会花时间确保你的内容对屏幕阅读器来说是可访问的,只是为了让那些人实际与你的网站交互变得很烦人。我相信是 Roger Johansson (456 Berea St.) 指出,仅仅因为有人使用辅助技术并不意味着他们不想拥有与其他人相同的浏览体验。
我个人使用 .no-js / .js 类(与 Modernizr 配合使用)来确保我的内容对没有 JS 的用户来说是可访问的,同时仍然为有 JS 的用户提供愉快的用户体验,然后我使用 .visuallyhidden 类来为屏幕阅读器提供任何“帮助”文本。
就我而言,隐藏的文本是可访问性的一项有用工具。在巴西,屏幕阅读器用户很欣赏我们告诉他们他们身在何处以及内容是如何显示的。
例如
我通常使用 h5bp.com 的 visuallyhidden 类来隐藏这种文本,因为它对“正常”用户来说很明显,而对屏幕阅读器用户来说是一个受欢迎的信息。
PS:我仍在努力弄清楚这如何影响 SEO。
很棒的文章。刚开始学习可访问性,所以我发现这非常有信息量。
与其设置你的“隐藏”类并执行任何 jQuery 动画使你获得“display:none”的反转,难道不是更好/更容易/更高效地直接删除 style 属性或使用 .show() 方法吗?
这就是我想要问的。为什么要动画化你不会看到动画的东西?你可以直接使用 hide() 和 show()。我想,如果你需要一些这些方法做不到的事情,你可以扩展 jquery 并创建一个类似 .readable() 的方法,它设置了你需要的所有的东西,而不会动画化你不会看到变化的东西。
另外,也许你可以更新你的文档顶部的 .animate() 的行为方式,以接受一个 {readable: true} 参数?你可以设置它甚至从 slideDown 等方法中传递下来,从而允许你立即覆盖可访问性。
感谢你提供这些例子,它们非常有用。
我一直认为,使用 CSS 中的 top: -9999px; 是不好的 SEO。基本上,蜘蛛会认为你在页面上隐藏了经过 SEO 优化的内容,但不想让它作为网站的一部分被查看。例如,你可以在一个 div 中添加一堆关键词并将其隐藏在页面之外。如果爬虫找到一个这样定位的 div,它会降低你的排名。
我觉得问题更多地在于屏幕阅读器,而不是编码方式的设计……
这是一个考虑不周的评论。屏幕阅读器和大多数其他辅助技术应该尊重 display:none(表单模式除外),因为这是它的主要目的。除此之外,依赖于可访问性层的辅助技术受制于该层中的内容。
感谢你的帖子。信息很有用。Joe,我以前也这样认为,但关键在于你隐藏文本的**意图**。在 Google Webmaster Central 上查看 Google 对此的说明。
问题是 Google 爬虫如何定义你的意图?我希望你链接的那篇文章能更清楚地说明。文章中提到:“如果你的网站被认为包含意图欺骗的隐藏文本和链接,你的网站可能会被从 Google 索引中删除,并且不会出现在搜索结果页面中。在评估你的网站以查看其是否包含隐藏文本或链接时,请查找任何对网站访问者来说不易查看的内容。是否有任何文本或链接仅供搜索引擎而非访问者使用?”
然后文章以“如果在你的网站上发现隐藏文本或链接,请将其删除,或者如果它们与网站访问者相关,请使其易于查看。” 结尾。
我可能理解错误了,但这篇文章似乎清楚地描述了隐藏内容,使其不易查看。他实际上有一个名为“visuallyhidden”的类。
据我所知,Google 不会解析具有“display: none;” 的元素中的任何内容。但是,它会解析具有“left: -999em;” 的内容。当它解析前者时,它不会影响你的 SEO,但当它解析后者时,它会扫描元素的内容,看看你是否试图操纵其系统。
我可能错了,但这是我目前理解的。
在这里,我找到了关于这个概念的博客文章(有点过时了)
http://luigimontanez.com/2010/stop-using-text-indent-css-trick/
http://maileohye.com/html-text-indent-not-messing-up-your-rankings/
显然事情可能已经改变,而且除了媒体查询之外,它们似乎没有提供解决问题的办法。我仍然避免以这种方式将事物隐藏在屏幕外。
最后我回应一下。
看来你大部分情况下都是正确的。使用此技术的网站只会受到 Google 的标记,不会受到惩罚。如果他们发现你的网站上还有其他 SEO 垃圾邮件,则隐藏技术可以用来进一步惩罚你的网站,但是,仅此技术不足以损害你的网站的 SEO。
正如你提到的,意图很重要。但是,如果没有 Google 发布其算法,我们似乎永远不会真正知道什么会做什么,除非经过反复试验。
感谢你的帖子。我即将开始几个网站,大多数用户可能会使用屏幕阅读器,这帮助很大……谢谢
始终提醒开发者,display:none 使内容无法访问屏幕阅读器。虽然是无意的,但它经常被误用。
尽管如此,在许多情况下,display:none 都是正确的方法。屏幕阅读器用户通常希望他们提供的页面内容代表屏幕上显示的实际页面内容。还要注意,并非所有屏幕阅读器都是盲人的。
像标题或显式表单标签之类的附加内容,放置在屏幕外的位置,如果这些内容在视觉上是多余的,则可以帮助屏幕阅读器以编程方式为用户提供对页面结构或关系的更好理解。但是,在其他情况下,例如未选中的选项卡面板,我认为需要使用 display:none。
正确实现的选项卡式界面对于屏幕阅读器用户来说很熟悉,他们对这些界面的功能有期望。在该熟悉的展示中,只有当前选中的选项卡面板对屏幕阅读器可用,或者对任何用户而言也是如此。这是选项卡式界面具有“状态”的一部分:当第二个选项卡控件处于活动状态时,只有第二个选项卡面板可用。当所有选项卡面板内容都可访问时,即使放置在屏幕外,不仅屏幕阅读器会宣布所有内容,还会使视障屏幕阅读器用户想知道正在读取什么内容,因为它在屏幕上不可见,而且对于盲人屏幕阅读器用户来说,当前哪个选项卡控件处于活动状态并不那么清楚,因为所有选项卡面板都可用。如果放置在屏幕外的选项卡面板内容包含可聚焦的元素,这些元素将保留在键盘 TAB 顺序中,添加额外的但实际上不可见的 TAB 停止,但是当它们获得焦点时,这个焦点在屏幕上将不可见,从而影响并可能使所有键盘用户(视障或非视障)感到困惑。
这是一篇关于这个一般问题的不错文章:http://simplyaccessible.com/article/better-for-accessibility/
祝好
Jason,你链接的 Derek Featherstone 的文章正是我想评论的原因。很高兴看到你抢先一步!:-) 这是对为什么有时 display:none 适用而有时不适用的很好的介绍。
如果你想使用 z-index,不要忘记z-index 的最大值!
问题:你为什么要让隐藏的内容首先对屏幕阅读器可用?如果你在用户操作后“淡出”某些内容,为什么它应该对屏幕阅读器可用,因为它对普通用户不可见?我们已经使内容变得多余,为什么它仍然需要?在我看来,这是一个对不存在的问题过度思考的解决方案。
好吧,这真的很重要!
我将它与使用 CSS3 过渡的多级菜单纯 CSS 一起使用。
WAI-ARIA 规范指定了一个隐藏状态,它应该被使用,并且在可访问性中的可见性方面有一些**非常**重要的点。
Chris —
非常好的观点,非常相关。通常情况下,除非我们的客户要求或目标人群需要使用网站,否则我们会忘记这些重要的事情。
对于那些正在寻找好的屏幕阅读器模拟器的人来说,Firefox 有一个很棒的附加组件,叫做“Fangs”(基于 JAWS):http://bit.ly/io5aks。我们一直在使用它来查看阅读器会输出什么,它非常有用。
感谢你的帖子!
我经常看到有关为禁用 JavaScript 的人进行设计的评论。有人在使用现代浏览器的现代计算机上真正禁用 JavaScript 吗?
除了 NoScript 的许多用户之外,我只能就我个人而言做出评论。如果我使用的是 Firefox,那么 JavaScript 将保持禁用状态,除非列入白名单。否则,我会在 Linux 上使用 Dillo。在这两种情况下,主要原因都是可用性/可访问性问题。
非常有见地的帖子。我刚开始学习可访问性以及如何相应地设计和编写网站代码。感谢你的帖子!
等等,你不能只是使用
???
对于 AT 来说,这与 display:none 的行为相同,因为它们使用的是可访问性层。因此,如果需要 display:none,并且你想要 vis:hidden 的效果,则可以使用它,但如果你需要某些内容保持可访问,则它将不会保持可访问。
感谢你的信息,我会进行测试并尝试一下。
然而,多年来,残疾人指南被边缘化,看到这一切的后果令人痛心。
感谢你的文章。
说得通,在我们设计新的招聘系统时,我们尝试满足屏幕阅读器的需求。我一生中从未使用过如此多的标题标签!
好文章,我从未对此有过太多思考。我将从今往后以这种方式使用它来增强可访问性。
祝好,
Chris
在代理机构工作,大多数客户对无障碍功能并不关心,只要它能在平板电脑和手机上运行,而且通常甚至连这些都不重要。这一切都取决于他们能支付多少费用,以及他们能从我们这里得到什么。这种事情是永远不会有人付费的,但它是一个好主意。不过,我还是不明白,向屏幕阅读器展示你想要隐藏的东西有什么意义。
你不明白?阅读一下其他评论:为 AT(不仅仅是屏幕阅读器)创建内容的意义已经得到了解释。
而且如果客户不愿意为一个体面的基本无障碍标准付费,我就不可能做生意。
这个技巧真是个麻烦,但不得不承认,Filament Group 写了一篇关于隐藏元素的优秀文章,其中包括关于使用 ARIA 属性的讨论。此外,还很好地参考了一些 WCAG 概述的 4 个原则的优缺点,这些原则必须满足才能确保内容的可访问性。
http://filamentgroup.com/lab/expand_and_collapse_content_accessibly_with_progressive_enhancement_jquery
我几周前就开始使用这种技术了...我终于明白了!
我在博客主页上使用文章缩略图,以前只显示缩略图...但现在我将其设置为显示缩略图、标题和摘要,并将它们隐藏在页面之外,以便你在代码中拥有这些内容。
你的意思是,如果内容在初始页面加载时使用 display:none; 隐藏,那么无论页面加载后 DOM 发生什么变化,屏幕阅读器都永远无法读取它吗?
这实际上与 DOM 无关,因为很少有 AT(据我所知,没有屏幕阅读器)直接访问它:这是关于浏览器的无障碍层,而 disp:none 应该将元素排除在该层之外。
我忘记补充一点,如果 disp:none 被移除,元素应该进入该层,尽管通常情况下,除非使用 ARIA(并且它是 ARIA 意识的),否则 AT 不会注意到这种变化。
克里斯,这些信息很棒。我一定会记下这些,以防我冒着失去高质量内容的风险,但我认为,与其我们挑剔代码并增加工作量,不如我们简单地制作大量优质内容(足够多,以至于几个 display:none 不会掩盖任何内容),让谷歌将好的网站从坏的网站中区分出来。
我的作品集教程怎么样?:)
克里斯,谢谢你的精彩文章。在我目前的职位上,我必须确保我们的网站是可访问的并且符合 508 标准。我们不使用 display:none;,而是使用你描述的技术将内容隐藏在屏幕外。
除了使内容可访问之外,等式的另一半是,我们必须确保网站是可用的。也就是说,你可能隐藏内容的原因是你想要添加并隐藏一个链接,该链接跳过导航并锚定到页面的主要内容。
为什么?想象一下使用屏幕阅读器,你必须依次浏览几个链接的标题,然后浏览许多链接的导航,也许还有一些社交媒体链接,对于用户来说,这些内容太多了,他们可能不需要。但如果他们进入页面,他们可以点击的第一个链接就是“跳过到主要内容的链接”,这样可以让用户跳过“无用”的内容,直接进入他们想要的内容,即该页面上的主要内容。
那些不使用 AT 的人理所当然地认为我们可以直接查看并点击以获得我们想要的内容。
没错,Fangs for Firefox 是一款模拟屏幕阅读器输出的优秀工具,如果你有兴趣,可以看看 FireEyes for Firefox,它是免费的(不是代言人!)。
哇!非常重要的事情。我会牢记在心。感谢分享 :)
使用负偏移量仍然会创建一个巨大的盒子,需要在屏幕外呈现。
更快的办法是
.hide-text {
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
}
通过 http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
关于命名的一点补充:“.visuallyhidden” 对我来说太长了。因此,在我的项目中,我将“.hidden” 重命名为“.away”(因为它实际上不存在了),并将“.visuallyhidden” 重命名为“.hidden”(因为它...嗯...隐藏在视窗之外)。
我很多次使用 display:none。我想知道是否可以使用服务器端脚本(php)来实现这一点。
我的担忧不仅仅是隐藏元素,还要在隐藏元素时不加载它。例如,在移动设备样式表中,我隐藏了在桌面视图中显示的某些元素;同时,我不想让它们在移动版本中加载,因为这可能会使页面略微变慢。有什么想法吗?
屏幕阅读器几乎与 ie6 一样。
这是这里最粗俗、最无知、最不准确的评论之一。
它确实很清楚,但不是你想要听到的。我敢肯定,sr 的份额很低,以至于不值得花那么多精力去满足少数人。如果你不同意,我想看看一些真实的数据来证明我的观点。
如果你使用过任何 AT,你会知道它们中的大多数,尤其是屏幕阅读器,比任何浏览器都要先进,尤其是 IE6。
构建对 AT 友好的网站非常容易。只需要一些知识、同理心和思考。所有开发者都应该具备这些品质。没有多少理由可以原谅不了解像这个主题这样的基础知识,这个主题已经被写了多年,而且写了无数次。
如果人们想要用户数据,他们可以从任何代表残疾人的国家机构获取。但是试图将像我这样的残疾人仅仅归结为统计数据是毫无意义、不关心,而且非常冒犯。这些数据在很大程度上是无关紧要的,因为我们都能够也应该构建所有人都可以使用的网站。如果有人可以使用网站 A,他们也应该可以使用类似的网站 B,因为它可以按照相同的标准构建。无论这样做是否能满足额外的 0.1%、1% 或 10%,这在包容性的语境中都是无关紧要的,永远不能成为不确保合理无障碍标准的借口。或者说,做好自己的工作。开发者不应该抱怨做一些非常简单的事情,而这些事情对于我们中的一些人来说至关重要。
很好的观点和教程。人们没有想到的另一件事是,display:none 和 visibility:hidden 会让你的代码出现在恶意软件扫描器中,就像 gzip、eval 和 base64 解码语句一样。很高兴听到有另一种(或更好的)方法来处理隐藏代码的问题。
谢谢你的博客文章!
在“幽灵”内容方面,使用两者有什么不同的效果?
这是一篇非常有见地,直击要点的文章,还提供了一些很好的资源。非常感谢分享。
请注意,
display:none
在 a11y 方面并不总是坏的。例如,它可以与类似下拉菜单或弹出菜单的复杂菜单一起使用。
这是因为使用
display:none
(与使用带有负偏移量的position:absolute
相比)会将元素从制表符流程中移除,这有助于用户浏览非常长的菜单...以及页面。display:none; 对于不一定可读的元素仍然很有用...
visibility:hidden 有什么问题?