【问题标题】:css selectors, IE and html doctypescss 选择器、IE 和 html 文档类型
【发布时间】:2011-11-17 18:28:31
【问题描述】:

我在使用以下文档类型的旧 Web 应用程序中编写 html 和 css

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

如果我将其更改为 html5 文档类型,则菜单将不起作用。我的问题是我不能使用一些 CSS 选择器,比如

input[type="radio"]

例如。但这显然适用于 html5 文档类型。有什么可能的解决方案吗?谢谢!

【问题讨论】:

  • 这里有一个非常相似的问题:stackoverflow.com/questions/7801470/… 你测试的是什么版本的 IE? 7、8、9?他们都应该识别带有文档类型的属性选择器。
  • @BoltClock 抱歉,忘了说我在 ie7 和 8 中测试
  • 我认为这种情况下的问题是页面出于某种原因默认以怪癖模式运行
  • 好的,现在我很困惑。你是否已经在你的 CSS 中使用了这样的选择器?他们现在工作还是不工作?

标签: css internet-explorer css-selectors doctype


【解决方案1】:

您提到的文档类型(没有 URL 的 HTML 4.0 过渡)触发了 quirks 模式。这导致 Internet Explorer 的呈现类似于 IE5。您的网站在 quirks 模式下运行良好,可能是因为它针对此类旧版本的 IE 进行了优化:例如,它可能采用边框框模型。自然,您不能使用更复杂的 CSS 选择器,因为 IE5 不支持它们。解决方案是重写标准模式渲染的代码。通常的方法是在 Firefox、Chrome 或 IE9 等符合标准的浏览器中使用 HTML5 doctype 开发应用程序,然后尝试修复可能出现在旧版本 Internet Explorer 中的错误。

【讨论】:

  • OP 说它最初以几乎标准模式呈现,支持高级选择器,但不再使用 HTML5 文档类型。除了,HTML5 文档类型被创建以便 IE 将以怪癖模式呈现。
  • @BoltClock 我不明白你的意思。如果应用程序使用不带 URL 的 HTML 4.0 过渡文档类型,它肯定已针对 quirks 模式进行了优化,这必须更改。我看不到 OP 在哪里说“它最初是在标准模式下渲染的”。
  • 哦,我现在明白了,我完全错过了它没有指向 URL。
  • @BoltClock - 供将来参考 - -//W3C//DTD HTML 4.0 Transitional//EN 总是会导致怪癖模式,无论是否有 URL。 -//W3C//DTD HTML 4.01 Transitional//EN 仅在缺少 URL 时才会导致怪癖模式。 - 见:dev.w3.org/html5/spec/…
【解决方案2】:

我已经解决了我在选择器和以前的 IE 版本中遇到的许多问题,只需包含这个 javascript 库(它需要 jQuery 或其他一些库才能工作):

http://selectivizr.com

值得一试。

selectivizr 是一个模拟 CSS3 伪类的 JavaScript 实用程序 和 Internet Explorer 6-8 中的属性选择器。

【讨论】:

  • 它似乎没有模拟 CSS2 属性选择器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 2014-03-17
  • 2011-02-02
  • 2014-07-09
相关资源
最近更新 更多