这是一个完整的无 Javascript、基于 CSS 的解决方案,可让您以 Internet Explorer 1-11 为目标!下面的解决方案通过使用@import 从所有现代工作表中隐藏 IE1-7,为 IE1-7 提供干净的白色页面布局,然后使用三个简单的 CSS 媒体查询“hacks”在导入的工作表中隔离 IE8-11。它甚至会影响 Mac 上的 IE。并且不需要 IE 条件 cmets。
有了这个解决方案,您将永远不必再为 Internet Explorer 定制您的网络应用程序,并且可以在您的所有网站中使用最先进的 CSS 安全地前进。最重要的是,它不需要 JavaScript 就能工作!!
工作原理
首先创建三个 CSS 样式表:
- “OldBrowsers.css”
- “ModernBrowsers.css”
- “Import.css”。
第一个样式表“OldBrowsers”是一个基本元素“重置”样式表,它为所有新旧浏览器提供了一个简单的白色块级布局,您可以在其中为每个 Web 浏览器设置所有元素的样式做过。这允许 20 多年的网络浏览器及其元素都使用相同的 HTML 设计并且看起来很相似。 IE1-11 也可以看到此表。在此工作表中添加仅设置元素样式所需的所有基本样式。第二张表“ModernBrowsers.css”是您可以安全地放置所有现代、尖端 CSS 的地方,这些 CSS 使用 HTML5 现代设计为元素设置样式,但控制布局等。IE1-7 不会看到此表。第三张表是导入表“Import.css”,它将使用单个@import 规则加载上面提到的第二张表和所有高级CSS 样式表。这会隐藏您的现代样式表,使其不受包括 IE1-7 在内的各种旧浏览器的影响。 IE1-11 会看到“Import.css”表,但 IE1-7 不会看到“ModernBrowsers.css”表,因为@import 规则。
<link media="screen" rel="stylesheet" type="text/css" href="OldBrowsers.css" />
<link media="screen" rel="stylesheet" type="text/css" href="Import.css" />
在您的“Import.css”表中添加此@import 规则,格式如下。此“ModernBrowsers.css”表将对 IE1-7 和下面列出的各种旧浏览器隐藏:
@import 'ModernBrowsers.css' all;
此导入工作表中的所有 CSS 将对 Internet Explorer 1-7 和各种旧版浏览器隐藏。 IE1-7,以及更广泛或更旧的浏览器,不理解媒体类型“all”,也不理解上面显示的特定@import格式,因此将无法导入此表。许多旧浏览器(2001 年之前)无法识别此特定版本的导入。那些浏览器现在太老了,您只需要为它们提供一个干净的白色网页,其中包含堆叠的内容块。
您添加到“旧浏览器”的 CSS 允许您设置旧浏览器和 IE1-7 以使用您控制的简单样式。我个人在这张表中只添加了 HTML“重置”元素样式,并确保所有 HTML5 元素都有简单干净的设计。较新的浏览器将在“ModernBrowsers.css”样式表中层叠这些。
在“ModernBrowsers.css”中,您想要添加所有现代样式,但也有特殊的 CSS hack 以使用 CSS 媒体查询(以及所有常规选择器和类)来定位 Internet Explorer 8-11 )。只需将以下仅限 IE 的修复程序添加到您的现代样式表中,以针对这些最后的特定 IE 浏览器。将任何特定于这些旧 IE 浏览器的样式放入这些块中。
注意:请记住 HTML5 和大多数 CSS3 通常从 Internet Explorer 9 到 11 开始受支持。但是 IE8-11 甚至 Trident Edge 浏览器都存在错误、缺少元素支持以及其他问题。但是您现在可以通过这种方式安全地定位这些较旧的 IE 8-11 浏览器,同时在此表中使用您最先进的 CSS 来支持所有其他现代浏览器:
/* IE8 */
@media \0screen {
body {
background: red !important;
}
}
/* IE9 */
@media all and (min-width:0\0) and (min-resolution:.001dpcm) {
body {
background: blue !important;
}
}
/* IE10-11 */
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
body {
background: green !important;
}
}
简单! 您现在有针对 IE1-11 的样式(所有 Internet Explorer 浏览器!)
通过此解决方案,您可以实现以下目标:
-
@import 完全从您的现代风格中排除了 IE 1-7!这些代理以及下面的列表将永远不会看到您的现代导入样式并获得干净的白色样式表内容页面,旧浏览器仍然可以使用查看您的内容(使用“OldBrowsers.css”来设置它们的样式)。使用上述@import 规则将以下浏览器从“ModernBrowsers.css”中排除:
- Windows Internet Explorer 1-7.x
- Macintosh Internet Explorer 1-5.x
- 网景 1-4.8
- Opera 1-3.5
- Konqueror 1-2.1
- Windows Amaya 1-5.1
- iCab 1-2
- OmniWeb
-
在您的“ModernBrowsers”导入表中,您现在可以使用简单的媒体查询“hacks”安全地定位 IE 浏览器版本 8-11。
-
该系统使用简单的@import 样式表系统,该系统使用传统的、不支持外部样式规则而不是散布在多个表中的 CSS 修复,快速且易于管理。 (顺便说一句...不要听任何人说@import 很慢,因为事实并非如此。我的导入表只有一行,大小可能只有一千字节或更小!@import 自万维网诞生以来就一直在使用和一个简单的 CSS 链接没有什么不同。将其与今天的兆字节 Javascript 孩子们使用这些新的“现代”ECMAScript SPA API 的浏览器进行比较,只是为了显示一小段新闻!)一个@import 行现在分隔年份以及多年的 IE 浏览器版本,来自您较新的 CSS 代码和精美的布局设计。无需编写脚本!
-
所有旧的 IE 浏览器和广泛的其他用户代理现在使用这种导入策略被排除在现代样式之外,这允许这些旧浏览器折叠回普通的“块级”白页和堆叠内容布局旧浏览器完全可以访问。您现在可以花最少的时间为旧浏览器自定义内容,而让他们看到您网站中数千个页面的纯白色堆叠内容页面!
-
请注意,此解决方案没有 IE 条件 cmets!你不应该使用这些,因为 IE 10-11 不再支持 IE 条件。
-
有了这个解决方案,您的现代网页设计现在可以 100% 免费使用自定义的尖端 CSS3 技术,而不必再担心旧版浏览器和 IE1-11!
-
Linked CSS 得到了非常广泛的支持,即使在 1995 年以前的旧 CSS1 浏览器中也是如此。这只是不使用 EMBEDDED 或“样式”元素样式的另一个原因。请改用这些链接的 CSS 设计。
-
如果您在“OldBrowsers”样式表中添加了一组非常好的“重置”或元素样式,20 多年的新旧浏览器及其基本元素设计将使您的核心网页设计看起来相同那一张。 “重置”元素 CSS 的想法是强制所有浏览器通过历史记录,以及它们共享的 HTML 元素支持,在应用 CSS 布局、脚本和更高级的 CSS 设计之前看起来相同。在过去的 25 年中,HTML 基本元素几乎没有变化。因此,首先对元素进行样式设置以简化文本内容显示是有意义的。
这是 2021 年新的“渐进式”CSS 的一部分,100% 无 JavaScript,设计概念用于解决跨浏览器样式问题,允许旧代理优雅地降级到更简单的布局而不是以零碎的方式努力解决神秘的旧的、损坏的、盒模型代理 (IE5-6) 中的问题以匹配复杂的 CSS 布局。大多数较旧的 Web 浏览器不再需要重新创建您的自定义布局。他们只需要显示基本的文本和媒体内容。随着他们在网上缓慢消亡的长尾,IE 1-11 只需要简单的布局设计,以便内容可读和可访问。
此策略的优势在于其 100% 无 Javascript! 您应该不使用 脚本 来管理 CSS 无论如何,在 2021 年的网络浏览器中。我建议您在 Web 浏览器中管理 Internet Explorer 时转储 Modernizr 和所有“polyfills”并尝试我的干净 CSS 解决方案。我的解决方案在针对 IE1-11 方面非常有效,让您可以完全控制如何为这些目标浏览器自定义 CSS,同时让您作为设计师可以专注于 Edge 和所有其他现代 HTML5 中的更新 CSS3 和尖端样式和布局浏览器向前发展。自 2004 年以来,我一直在使用此版本,但最近更新到 2021 年。
我希望我们停止创建这些巨大的、数兆字节、CPU 占用、JavaScript 化、polyfill 噩梦脚本解决方案,以解决几年前通过几行简单的层叠样式解决的问题表代码。 :)