这是一个完整的无 Javascript、基于 CSS 的解决方案,可让您以 Internet Explorer 1-11 为目标!我下面的解决方案通过使用 将 IE1-7 从所有现代工作表中隐藏起来@import
,为 IE1-7 提供干净的白色页面布局,然后使用三个简单的 CSS 媒体查询“hacks”在导入的工作表中隔离 IE8-11。它甚至会影响 Mac 上的 IE。并且不需要 IE 条件注释。
有了这个解决方案,您再也不必为 Internet Explorer 定制您的 Web 应用程序,并且可以在您的所有网站中使用最先进的 CSS 安全地前进。最重要的是,它不需要 JavaScript 就可以工作!!
这个怎么运作
首先创建三个 CSS 样式表:
- “老浏览器.css ”
- “现代浏览器.css ”
- “导入.css ”。
第一个样式表“OldBrowsers”是一个基本元素“重置”样式表,它为所有新旧浏览器提供了一个简单的白色块级布局,您可以在其中为每个 Web 浏览器设置所有元素的样式。这允许 20 多年的网络浏览器及其元素都使用相同的 HTML 设计并且看起来很相似。IE1-11 也可以看到此表。在此工作表中添加仅设置元素样式所需的所有基本样式。第二张表“ModernBrowsers.css”是您可以安全地放置所有现代、尖端 CSS 的地方,这些 CSS 使用 HTML5 现代设计为元素设置样式,但控制布局等。IE1-7 不会看到此表。第三张表是导入表,“Import.css”,@import
规则。这会隐藏您的现代样式表,使其不受包括 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 年之前)无法识别此特定版本的导入。这些浏览器现在太老了,你只需要为它们提供一个干净的白色网页,里面有堆积的内容块。
添加到“OldBrowsers”的 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
- 歌剧 1-3.5
- 征服者 1-2.1
- Windows Amaya 1-5.1
- iCab 1-2
- 全网
在您的“ModernBrowsers”导入表中,您现在可以使用简单的媒体查询“hacks”安全地定位 IE 浏览器版本 8-11。
该系统使用一个简单的@import
样式表系统,该系统使用传统的、不支持外部样式规则而不是散布在多个表单中的 CSS 修复,快速且易于管理。(顺便说一句......不要听任何人说@import
慢,因为它不是。我的导入表有一行,大小可能是一千字节或更小!@import
自万维网诞生以来就一直在使用,与简单的 CSS 链接。与今天的 Javascript 孩子们使用这些新的“现代”ECMAScript SPA API 进入浏览器的兆字节相比,只是为了显示一小段新闻!)@import
一行现在将多年和多年的 IE 浏览器版本与您的新版本分开CSS 代码和精美的布局设计。无需编写脚本!
所有旧的 IE 浏览器和广泛的其他用户代理现在使用这种导入策略被排除在现代样式之外,这允许这些旧浏览器折叠回完全可访问的纯“块级”白页和堆叠内容布局由较旧的浏览器。您现在可以花费最少的时间为旧浏览器自定义内容,而让他们看到您网站中数千个页面的纯白色堆叠内容页面!
请注意,此解决方案没有 IE 条件注释!你不应该使用那些,因为 IE 10-11 不再支持 IE 条件。
有了这个解决方案,您的现代网页设计现在可以 100% 自由地使用自定义的尖端 CSS3 技术,而不必再担心旧的浏览器和 IE1-11!
链接 CSS 有非常广泛的支持,即使在 1995 年以前的旧 CSS1 浏览器中也是如此。这只是不使用嵌入或“样式”元素样式的另一个原因。改为使用这些链接的 CSS 设计。
如果您在“OldBrowsers”样式表中添加了一组非常好的“重置”或元素样式,那么 20 多年的新旧浏览器及其基本元素设计将使您的核心网页设计看起来与使用该表单相同. “重置”元素 CSS 的想法是强制所有浏览器通过历史记录,以及它们共享的 HTML 元素支持,在应用 CSS 布局、脚本和更高级的 CSS 设计之前看起来相同。在过去的 25 年中,HTML 基本元素几乎没有变化。因此,首先对元素进行样式设置以简化文本内容显示是有意义的。
这是 2021 年新的“渐进式”CSS 的一部分,100% 无 JavaScript,设计概念用于解决跨浏览器样式问题,允许旧代理优雅地降级为更简单的布局,而不是努力解决神秘的旧问题,破碎的盒模型代理 (IE5-6) 以零碎的方式匹配复杂的 CSS 布局。大多数较旧的 Web 浏览器不再需要重新创建您的自定义布局。他们只需要显示基本的文本和媒体内容。随着他们在网上缓慢消亡的长尾,IE 1-11 只需要简单的布局设计,以便内容可读和可访问。
这种策略的优势是它 100% 无 Javascript!无论如何,你不应该在 2021 年使用脚本来管理Web 浏览器中的CSS。我建议您在 Web 浏览器中管理 Internet Explorer 时转储 Modernizr 和所有“polyfills”并尝试我的干净 CSS 解决方案。我的解决方案在针对 IE1-11 时非常有效,让您可以完全控制如何为这些目标浏览器自定义 CSS,同时让您作为设计师可以专注于更新的 CSS3 以及 Edge 和所有其他现代 HTML5 中的尖端样式和布局浏览器向前发展。自 2004 年以来,我一直在使用此版本,但最近在 2021 年对其进行了更新。
It's my hope we stop creating these gigantic, multi-megabyte, CPU-hog, JavaScripted, polyfill nightmare scripted solutions for addressing what used to be solved years ago with a few lines of simple Cascading Style Sheet code. :)