如何在IE 7和IE 8中隐藏特定的CSS行

3
我一直在尝试让一些CSS下拉菜单在IE 7和8上正常工作,其他浏览器都可以。网站是:http://hanling.focusww.com。我有一块CSS代码,其中包含一些我想要在IE 7和8中隐藏的行。我在这些行的末尾标记了“*”。
#menu a:visited {
  color:#f9f6e0;
  display:block;
  font-weight:700;
  padding-bottom:10px; //kill this in ie *
  padding-left:12px;
  padding-right:12px;
  padding-top:10px;  //kill this in ie *
}

有人能指引我一篇讲解如何实现这个功能的文章吗?

如果您的设计不需要像素级精确度,您可以考虑使用非固定单位来设置边距/填充,例如“em”或百分比。维护针对IE的单独样式表可能会带来更多麻烦而不值得。大多数用户不会在多个浏览器中访问您的网站,并且可能不关心在不同浏览器中略有不同的外观。 - mcknz
所有这些答案都很棒,但到目前为止,没有一个起作用。我有一个不合作的WordPress子主题。叹气。 - Nohl
也许可以发布一些HTML和CSS的具体部分,说明它们没有正常工作,或者创建一个jsfiddle - mcknz
3个回答

7
你可以使用 IE条件注释 来实现这一点:

HTML

<!--[if IE 7]> <html class="ie7"> <![endif]-->
<!--[if IE 8]> <html class="ie8"> <![endif]-->

CSS

#menu a:visited {
  color:#f9f6e0;
  display:block;
  font-weight:700;
  padding-bottom:10px; //kill this in ie *
  padding-left:12px;
  padding-right:12px;
  padding-top:10px;  //kill this in ie *
}

.ie7 #menu a:visited,
.ie8 #menu a:visited, {
  padding-bottom: 0; //kill this in ie *
  padding-top: 0;  //kill this in ie *
}

也可以使用CSS-Hacks实现,更多信息请参考:http://www.webdevout.net/css-hacks#in_css

#menu a:visited {
 color:#f9f6e0;
 display:block;
 font-weight:700;
 padding-bottom:10px; 
 padding-bottom:0\9; //kill this in ie *
 padding-left:12px;
 padding-right:12px;
 padding-top:10px;  
 padding-top:0\9; //kill this in ie *
}

只是提醒一些和我一样的人...条件注释在IE 10+上不再受支持。 - NineCattoRules
1
@Simone 是的,这就是为什么有些人在他们的“head”中添加了<http-equiv="X-UA-Compatible"...标签的原因。由于这个问题涉及到7和8,我会保持我的答案不变 ;) 然而,如果特性检测(https://modernizr.com)不可行,你应该看一下http://browserhacks.com/。 - yckart
@Simone 你给 content 属性分配了什么值? - yckart
我尝试了Alien先生的解决方案,所以基本上我链接了一个新的样式表。 - NineCattoRules
@Simone 我所提到的 content 属性,是要应用于上方的 meta 标签。这个链接可能会对你有所帮助 https://msdn.microsoft.com/zh-cn/library/hh801214(v=vs.85).aspx - yckart
显示剩余3条评论

1

您可以使用IE条件注释,但无法从IE中隐藏特定样式,甚至@yckart链接很酷,但最好使用特定的样式表

<!--[if IE 7]>
    Only Shows Up In IE7
    <link href="#" rel="stylesheet" type="text/css" />
<![endif]-->

<!--[if IE 8]>
    Only Shows Up In IE8
    <link href="#" rel="stylesheet" type="text/css" />
<![endif]-->

了解一下 - 基本上是ie7.css和ie8.css? - Nohl
@Nohl 任何事情都可以 :) 但是你在注释中指定的内容只适用于该特定版本,或者您可以使用 <!--[if IE]> 来针对一般的IE。 - Mr. Alien

1
我会这样做:
#menu a:visited {
 color:#f9f6e0;
 display:block;
 font-weight:700;
 padding-bottom:10px; 
 padding-bottom:0\9; //IE 8 and below
 padding-left:12px;
 padding-right:12px;
 padding-top:10px;  
 padding-top:0\9; //IE 8 and below

}

如果这些是您所需的唯一IE特定样式,那么使用条件样式表可能比较容易。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接