据我所知,Progressive Enhancement 的基本原则之一是网站应该对每个人 都有效,无论浏览器版本或设置如何。
我看到的建议分割是:
- 使用语义标记的 HTML 内容层
- CSS 表示层
- 增强层(通常通过 JavaScript 或 JQuery 等 JS 库)
不过,我对处理 HTML 内容层的正确方法有点困惑。特别是语义标记。
我一直看到 HTML5 标签,如 nav、article、footer 等,是为 PE 维护这种语义标记的理想方法。但是,许多旧版浏览器不支持 HTML5 标签。解决这个问题的简单方法是使用 CSS 将默认样式设置为 { display: block; } 对于 HTML5 标签,但这只适用于某些浏览器。例如,可怕的 IE6 无法识别 HTML5 元素。
此问题的典型解决方法是使用 javascript 将缺失的元素直接动态创建到 DOM 中(例如通过 HTML5 shiv)。
但是...如果客户端运行的环境无法识别 HTML5 元素,并且无论出于何种原因,他们都不接受 javascript,您如何将 HTML5 语义标签纳入支持Progressive Enhancement 的一部分,而不会为无法识别标签的无脚本浏览器正确呈现?这是可能的,还是您必须将这些浏览器排除在设计考虑之外(这似乎与 PE 理想背道而驰)?
最佳答案
如果您对以这种方式支持没有 JS 的 GhettoIE 过于偏执,现在可能是时候在 HTML 中使用 if ie
注释,引导人们获取 Chrome Frame,或者获取一个更好的浏览器,或者单击一个链接将他们带到一个老式的、功能不佳但功能齐全的页面版本,该版本遵循 CSS2.1(仅核心功能)和 HTML4.01 严格标记。
渐进增强的要点是提供关注点分离,并提供受支持的功能... ...但这里有基线要求。
您也不能指望 Mosaic 和 IE3 能运行这些东西。
带有 JS 的 IE6,或非 IE,现代标准浏览器,没有是事实上的,在这里。
关于javascript - 您如何使用 HTML5 标签,同时为本身不识别未知元素的无脚本客户端支持渐进增强?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266142/