javascript - 您如何使用 HTML5 标签,同时为本身不识别未知元素的无脚本客户端支持渐进增强?

标签 javascript css html progressive-enhancement

据我所知,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/

相关文章:

javascript - 如何延迟触发 slider 的 jQuery 自动前进脚本中的第一次单击?

css - 如何在不断移动的 Bootstrap 中创建幻灯片?

javascript - jQuery Scroll 事件在没有实际滚动的情况下触发

html - Flex 页面布局在 IE11 中不起作用 - Flex 增长效果不佳

javascript - 使用vue + webpack加载图片

javascript - 有人可以用 Javascript 解释这个语法吗 - "type = type || ' fx' "

使用透视、rotateX、rotateY 和缩放时 Webkit 中的 CSS Transform 悬停错误

css - 在 wordpress 下更改 Tweetmeme 按钮颜色

html - 如何使 div 高度在每个浏览器上兼容

javascript - 使用特殊字符在 Javascript 中排序