繁体   English   中英

针对 Chrome、IE、Firefox 的 CSS 检查

[英]CSS check for Chrome, IE, Firefox

在渲染我的网站时,我注意到三个主要浏览器中的一个小对齐问题。 因此,如何使用纯 CSS 执行以下伪代码?

if Webkit (Safari/Chrome) {
    #myDIV {margin-top:-3px}
} else if (Firefox) {
    #myDIV {margin-top:0px}
} else { // IE and other browsers
    #myDIV {margin-top:1px}
}

您可以使用 CSS Hack。 但是,我不会推荐它。

对于 IE,您可以在条件注释中包含一个单独的 CSS 文件或<style>标签,如下所示:

<!--[if IE] <tag> <![endif]-->

如果它只有一个属性,则不需要条件注释来包含其他文件。 但如果你想要那样做,就像 SLaks 已经写的那样。 另一种方法是使用特定于浏览器的 hack 在特定类的末尾添加一个属性。

.foo {
  margin-top: 5px; // general property
  _margin-top: 2px; //IE 6 and below
}

或者,您将类分开并在通用类下添加浏览器特定类。

/* general */
foo {
   width : 20em;
}

/* IE 6 */
* html foo {
   width : 27em;
}

/* IE 7 */
* + html foo {
   width : 29em;
}

你真的不能用纯 CSS 来做到这一点。 最好的方法是使用服务器端代码(如 ASP.NET 或 PHP)读取 HTTP 请求的“用户代理”标头,并通过搜索该字符串中的关键字来确定访问者使用的浏览器。 例如,我的用户代理是:

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3

您可以做的是使用一组 if-else 语句在用户代理中查找字符串,例如“Firefox”或“MSIE”或“WebKit”,然后根据所使用的浏览器提供不同的单独 CSS 文件。

你可以用 JavaScript 做同样的事情,但请记住,用户可能禁用了 JavaScript,或者更有可能他们的设备可能不支持它......而实际上任何 HTTP 请求都会发送一个用户代理字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM