CSS 面试题 目录

请描述你对 Web Accessibility (可访问性) 的理解。在 CSS 方面,如何提高网站的可访问性?

推荐答案

Web Accessibility(Web 可访问性)是指让残障人士(包括视觉障碍、听觉障碍、肢体障碍、认知障碍等)也能平等地使用 Web 内容和功能的能力。一个具有良好可访问性的网站能够被更广泛的用户群体访问和使用,体现了社会责任感,也符合法律法规的要求(如美国的ADA,中国的《信息无障碍环境建设标准》等)。

在CSS方面,我们可以通过以下几种方式来提高网站的可访问性:

  1. 语义化HTML结构: 使用正确的HTML标签,避免滥用<div><span>。CSS的样式应该服务于结构,而不是反过来。
  2. 颜色对比度: 确保文本和背景之间的颜色对比度足够高,以便视力障碍用户能够清晰阅读。可以使用在线工具检查颜色对比度是否符合 WCAG 标准。
  3. 避免使用纯色传递信息: 不要只依赖颜色来传递信息(例如,红色表示错误),应当同时使用文字或图案等其他视觉元素辅助。
  4. 使用键盘可操作性: 确保页面元素可以使用键盘进行导航和操作,特别是交互组件如链接、按钮、表单等。CSS可以帮助实现 :focus 状态的视觉反馈,以及合理的tabindex属性的使用(但应尽量避免滥用,优先使用语义化HTML)。
  5. 避免使用outline: none; outline是键盘焦点的重要视觉提示,除非有非常好的替代方案,否则不应该移除。
  6. 响应式设计: 使用媒体查询使网站在不同设备和屏幕尺寸上都能良好呈现,满足不同用户的需求。
  7. 避免使用绝对单位: 使用相对单位(如emrem%)可以让用户根据自己的需要调整字体大小,提高可读性。
  8. 提供足够的点击/触摸区域: 确保交互元素有足够大的点击或触摸区域,方便不同类型的用户操作。
  9. 注意动画和过渡效果: 避免使用过快或闪烁的动画,因为它可能会引起部分用户的身体不适。可以使用prefers-reduced-motion 媒体查询来禁用动画。
  10. 使用CSS媒体特性: prefers-reduced-motionprefers-contrast等CSS媒体特性可以让网站根据用户的偏好做出相应调整,提供个性化的体验。
  11. 隐藏不必要的内容: 对于辅助设备而言,可以使用clip-path属性,或者设置position:absolute配合overflow:hidden的方式在视觉上隐藏内容,但依然保留其在DOM结构中的存在。避免使用 display: none;visibility: hidden; 隐藏对于辅助设备来说也很重要的内容。

本题详细解读

什么是Web Accessibility?

Web Accessibility(Web 可访问性)的定义是确保网站和Web应用程序能够被尽可能多的人使用,包括那些有各种残疾的人。这不仅仅是道德要求,而且在很多国家和地区都有法律法规的约束,确保所有用户都能平等地访问信息和服务。一个具有良好可访问性的网站不仅对残疾人士有益,对所有用户也有好处,例如在弱网环境下访问速度更快、更好的SEO等。

CSS在提高可访问性中的作用

虽然HTML结构和JavaScript交互性在可访问性中扮演重要角色,但CSS在以下几个方面也至关重要:

  1. 视觉呈现: CSS控制页面的视觉呈现,包括布局、颜色、字体等。正确使用CSS可以确保信息清晰、易读,并为用户提供良好的视觉体验。例如,颜色对比度、字体大小、排版等都直接影响用户获取信息的能力。

  2. 键盘导航: CSS的:focus伪类可以用来为键盘焦点提供视觉反馈,帮助用户了解当前焦点在哪儿。合理的tabindex属性管理也可以改善键盘导航的体验。

  3. 响应式设计: CSS的媒体查询可以根据不同的设备和屏幕尺寸来调整布局和样式,确保网站在各种环境下都能良好显示,满足不同用户的需求。

  4. 减少干扰: CSS可以帮助控制动画和过渡效果,避免使用可能对部分用户造成不适的动画效果。

  5. 内容控制: CSS的媒体特性如prefers-reduced-motionprefers-contrast 可以帮助用户自定义其视觉体验。

提高可访问性的具体CSS实践

  1. 语义化HTML和CSS分离:

    • 使用合适的HTML标签(如<nav>, <aside>, <article>, <main>等)来表示内容结构。
    • CSS应该用来处理样式,而不是用来代替HTML的结构功能。
    • 避免使用<div><span>滥用。
  2. 颜色对比度:

    • 使用在线工具 (如WebAIM Contrast Checker) 测试文本和背景的颜色对比度,确保符合 WCAG (Web Content Accessibility Guidelines) 标准。
    • 一般文本的颜色对比度应至少达到 4.5:1 ,大号文本则应该至少达到 3:1。
  3. 不要只依赖颜色来传递信息:

    • 使用额外的视觉元素(如图标、文字、图案等)来辅助颜色的信息传递。
    • 例如,错误提示不仅使用红色,还需要搭配错误图标和文字。
  4. 键盘可操作性:

    • 确保所有交互元素都能通过键盘访问。
    • 使用 :focus 伪类为键盘焦点提供明显的视觉指示。
    • 合理使用tabindex属性,但要避免滥用,优先使用语义化HTML结构来控制tab顺序。
  5. 避免去除 outline

    • 除非有非常好的替代方案,否则不要去除默认的 outline,因为它是键盘用户的关键视觉提示。
  6. 响应式设计:

    • 使用 CSS 媒体查询来适配不同的屏幕尺寸,确保在各种设备上都能良好显示。
    • 使用相对单位(emrem%等)来调整字体大小,允许用户自定义字体缩放。
  7. 动画和过渡效果:

    • 避免使用快速、闪烁或过度的动画效果。
    • 使用 prefers-reduced-motion 媒体查询来禁用动画,或者采用更平缓的过渡效果。
  8. 足够的点击/触摸区域:

    • 确保按钮、链接等交互元素有足够的点击/触摸区域,方便用户操作,特别是手指操作的用户。
  9. 隐藏不必要的内容:

    • 使用 clip-path 或者 position: absolute; overflow: hidden; 等方法来隐藏视觉上的内容,避免使用display:nonevisibility:hidden
  10. 利用CSS媒体特性:

    • 使用 prefers-reduced-motionprefers-contrast 等媒体特性,为用户提供个性化设置。

注意事项

  • 可访问性不是一次性的任务,而是一个持续改进的过程。
  • 在开发过程中应该考虑可访问性,而不是在完成后再进行修复。
  • 可以使用工具(如 Lighthouse、WAVE)来检查网站的可访问性。
  • 定期进行用户测试,特别是包括残障人士在内的用户测试,可以帮助发现和解决问题。
纠错
反馈