为webkit / IE指定CSS而不使用单独的CSS

时间:2011-09-29 16:04:58

标签: css webkit

对于IE我可以使用它:

.content {
   *padding: 10px;
   padding: 10px
}

通过这样做,* -part将仅用于IE。 webkit浏览器也有这样的三元组吗? (Whitout让他们为webkit浏览器调用了特殊的.css吗?)

5 个答案:

答案 0 :(得分:1)

基于webkit的浏览器没有这样的黑客攻击。但是,您可以使用以下方式(在多个浏览器中)实现此类效果:

<script>
(function(){ //anonymous function to prevent leaking
  var d = document.createElement("div");
  d.style.cssText = "-webkit-border-radius:1px;"; // webkit, such as Chrome/Safari
  if(/webkit/i.test(d.style.cssText)){
      var style = document.createElement("style");
      style.src = "webkit-only.css";
      document.getElementsByTagName("head")[0].appendChild(style);
  }
})();
</script>

此解决方案背后的关键是浏览器忽略未知的CSS声明。 -webkit-前缀仅在基于webkit的浏览器中可用。

同样,以下前缀可用于检测其他浏览器引擎:

  • -moz-border-radius:1px; - Gecko,例如Firefox
  • -o-border-radius:0; - Opera
  • -ms-border-radius:0; - Trident,例如Internet Explorer

您的用户可能有一个不支持border-radius的古老浏览器,但由于Chrome通常保持最新(自动更新),因此webkit解决方案应该始终工作

答案 1 :(得分:1)

找到一个体面的黑客。似乎一见钟情:)

@media screen and (-webkit-min-device-pixel-ratio:0) {
     div.panel-homepage div#plan-build-operate div.panel-pane ul.links a { padding-top: 20px;}
}

答案 2 :(得分:1)

如果您使用PHP,则有一个函数调用:

<强> get_browser()

查看:http://php.net/manual/fr/function.get-browser.php

此函数返回有关客户端浏览器的所有信息的数组。 在body标签中将这些信息添加为CSS类。

您将能够在不使用CSS hack的情况下定位特定浏览器 有一个有效的CSS代码。

祝你好运!

答案 3 :(得分:1)

我发现了一种新方法,而不是对没有安装扩展程序的人使用get_browser()。这种新方法是使用HTACCESS代替。您需要安装模块“mod_setenvif”。

以下是您需要放入.htaccess文件的代码。 它是HTTP_USER_AGENT服务器变量的正则表达式。如果匹配,我们创建一个USER_AGENT变量来存储匹配的浏览器名称。

<IfModule mod_setenvif.c>
BrowserMatch "Mozilla" USER_AGENT=firefox
BrowserMatch "Safari" USER_AGENT=safari
BrowserMatch "Chrome" USER_AGENT=chrome
BrowserMatch "MSIE" USER_AGENT=ie
</IfModule>

然后,您可以在PHP代码中使用新的服务器变量。

<body class="<?php echo $_SERVER['USER_AGENT'];?>">

祝你有个美好的一天。

答案 4 :(得分:1)

使用以下内容来定位Webkit:

x:-webkit-any-link { padding: 10px; }

如果您需要支持IE7,请添加以下内容以过滤此规则以应用它:

 * > /**/ .content, x:-webkit-any-link { padding: 10px; }