order仅改变视觉顺序,不影响DOM、Tab焦点、屏幕阅读器朗读及SEO;生效需父容器设display:grid且子元素未被显式定位(如grid-row/area),否则无效。
不会影响——order、grid-area、grid-row 等纯 CSS 手段改变的只是视觉顺序,屏幕阅读器、Tab 键焦点流、SEO 抓取全部按 HTML 原始 DOM 顺序执行。
CSS Grid 的视觉重排(比如用 order 或 grid-template-areas)发生在渲染层,不触碰文档树。浏览器的可访问性 API 读取的是 DOM 结构本身,不是样式计算后的结果。
<header> → <nav> → <main> → <aside> 依次移动,哪怕你用 order: -1 把 <aside> 放到了最前面grid-area: "sidebar" 被塞进顶部就提前读它真正危险的不是 CSS 排序,而是误以为它能“解决语义问题”而跳过结构优化。
<aside> 写在 <main> 前面,再靠 order: 1 让它视觉上后置——结果屏幕阅读器先读侧边栏,用户一头雾水order 值(比如 desktop order: 2 → mobile order: -5),导致键盘用户缩放后焦点突然跳到页面中间display: contents 隐藏容器但没补 role 或 aria-labelledby,让子元素失去语义上下文别只看页面长什么样,关掉 CSS 后检查三件事:
真正需要换序时,优先改 HTML:移动端把 <main> 放最前,桌面端再用 CSS 调视觉位置。CSS 是画布,DOM 才是底稿——这点容易被忽略,但决定无障碍成败。