gpt4 book ai didi

html - 仅在 IE<7 中使用条件注释评估 css 表达式?

转载 作者:太空宇宙 更新时间:2023-11-04 14:25:15 25 4
gpt4 key购买 nike

我已经知道:“不要使用 css 表达式!”我的问题不是关于我是否应该使用表达式或者是否有其他选择;我的问题很简单:我能否让一个 css 表达式只在版本 7 之前的 IE 版本中评估而不使用条件注释?

我偶尔会使用下划线 hack 来隐藏 IE7 的规则,但 IE7 似乎无论如何都会计算表达式。例如,_width:700px; 会被 IE7 忽略,但 _width:expression('700px'); 仍会被计算。

我知道有人会告诉我只使用条件注释来包含规则,但我正在寻找一种方法来执行此操作,而无需将单个样式规则放入单独的文件中。

给那些仍然不想放手的人的注意事项:我选择使用 css 表达式,但我并没有轻率地这样做。我理解其中的含义,并且我使用的是只计算一次的表达式。别再担心我的错误决定了,只要回答问题就好了……;-)

最佳答案

我总是使用星号“hack”来专门针对 IE6,但它确实要求您的浏览器处于标准兼容模式(见下文)。

/* IE6 only */   
* html .myClass {
width: 500px;
}

我喜欢它,因为它不依赖于浏览器中的解析不一致,它根据 W3C 进行验证.

至于处于标准兼容模式,您应该始终向您的页面添加有效的 DOCTYPE,因为它会导致更少的 CSS 错误和浏览器特性。有关 quirksmode 和标准兼容模式的解释,请查看此 article .

您可以使用下面的示例在每个浏览器中使用表达式。我在 FF、IE6 和 IE7 中对其进行了测试,它按预期工作。我只希望 SO 有语法高亮来识别 CSS 表达式并将它们标记为红色,这样你就可以被提醒它们是邪恶的。我可以问一下您为什么决定首先使用 CSS 表达式吗?很多人尝试使用它们在 IE6 中实现最小宽度,但这不是正确的解决方案。如果这是你要解决的问题,我已经写了an answer in a separate question演示 IE6 中最小宽度的有效 CSS 解决方案。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">

.ie6 {
display: none;
}

* html .ie6 {
display: expression("block");
}

* html .ie7 {
display: expression("none");
}

</style>
</head>
<body>
<div class="ie6">
This is IE6
</div>
<div class="ie7">
This is Firefox or IE7+
</div>
</body>
</html>

关于html - 仅在 IE<7 中使用条件注释评估 css 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com