IE9 浏览器模式和条件注释
Posted
技术标签:
【中文标题】IE9 浏览器模式和条件注释【英文标题】:IE9 Browser modes and conditional comments 【发布时间】:2012-06-15 08:22:22 【问题描述】:我正在使用 html Boilerplate 文档标题,它为 IE 版本的标签添加了各种类。当使用 IE9(按 F12)并更改浏览器模式时,我似乎记得这将始终显示相关的浏览器(在兼容模式下为 IE8/IE7 或 IE7),但是,现在这似乎不起作用。
<!DOCTYPE html>
<!-- [if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!-- [if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!-- [if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]-->
<!-- [if gt IE 8]><!--><html class="no-js" lang="en"> <!--<![endif]-->
<head>
该网站可以在http://rangeessentials.petersenuploads.co.uk/查看
使用我的 IE7 虚拟机似乎也无法正常工作。我错过了什么,因为我总是得到没有 IE 类的最终标签。
【问题讨论】:
【参考方案1】:与其有多个<html>
开始标签,这无论如何可能是非法的,你应该有多个样式表,然后在这些样式表中相应地应用相关样式:
<!-- [if lt IE 7]><link type="text/css" rel="stylesheet" href="Styles_IE-7.css" /><![endif]-->
<!-- [if IE 7]><link type="text/css" rel="stylesheet" href="Styles_IE7.css" /><![endif]-->
<!-- [if IE 8]><link type="text/css" rel="stylesheet" href="Styles_IE8.css" /><![endif]-->
<!-- [if gt IE 8]><link type="text/css" rel="stylesheet" href="Styles_IE8-.css" /><![endif]-->
但即使在您的代码中,您的最后一个条件注释中也有 <!-->
和 <!--
- 这也可能是问题所在。
【讨论】:
应该没问题。当然,当前大多数样板类型的解决方案都在使用它stuffandnonsense.co.uk/projects/320andup,html5boilerplate.com 我不明白它的目的。拥有多个 html 开始标签比拥有多个样式表更好吗? 不,只有一个 标签被渲染,但它允许你做类似 .lt-ie7 ul li display: inline; zoom:1 你可能使用过 display: inline-block;基本上是针对 IE 浏览器而不使用 hack 的一种更简洁的方法。看看html5boilerplate.com 哦,我明白了。但是,不是渲染许多 标记之一,而是像我的回答那样为适当的样式表渲染许多 标记之一,这不是更容易吗?然后,您只需在 Styles_IE-7.css 或 w/e 中使用ul li ...
而不是 .lt-ie7 ul li ...
。
在过去,是的,但这是针对响应式网站,您可以在其中加载基于屏幕尺寸(媒体查询)的样式表。这样做,您可以为每种屏幕尺寸的每个 IE 获得一组样式。这样,您可以将所有 IE 修复程序合并到一个样式表中(也可以提高下载速度,因为您没有很多文件)以上是关于IE9 浏览器模式和条件注释的主要内容,如果未能解决你的问题,请参考以下文章