Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果是浏览器,使用Javascript?_Javascript_Jquery_Animation - Fatal编程技术网

如果是浏览器,使用Javascript?

如果是浏览器,使用Javascript?,javascript,jquery,animation,Javascript,Jquery,Animation,我有一个脚本,可以检测某人正在使用的浏览器(和版本),我想对它进行设置,以便对于某些浏览器,div类可以获得悬停动画。我希望使用jQuery来实现这一点,但我对任何东西都持开放态度 我对JavaScript的想法是 if (browser == IE || browser < Firefox 4) { // somehow animate a div class on hover (could be id-based too) } else { // do

我有一个脚本,可以检测某人正在使用的浏览器(和版本),我想对它进行设置,以便对于某些浏览器,div类可以获得悬停动画。我希望使用jQuery来实现这一点,但我对任何东西都持开放态度

我对JavaScript的想法是

if (browser == IE || browser < Firefox 4) {
      // somehow animate a div class on hover (could be id-based too)
    } else {
      // do nothing
    }
然后HTML是(显然)


满足于此


其目的是为旧浏览器提供CSS3修复程序。在我看来,转换是CSS3最好的功能之一,IE9不支持转换,这让我非常恼火。

与其这样,不如使用类似Modernizer库的功能

Modernizr向元素添加类,这些类允许您在样式表中针对特定的浏览器功能。使用它实际上不需要编写任何Javascript

然后你可以做这样的事情:

.multiplebgs div p {
  /* properties for browsers that
     support multiple backgrounds */
}
.no-multiplebgs div p {
  /* optional fallback properties
     for browsers that don't */
}
<![if (IE 6)|(IE 7)|(IE 8)]-->
<link type="text/css" rel="stylesheet" href="nocss3.css" />
<script type="text/javascript" src="nocss3.js"></script>
<![endif]-->

在这里使用浏览器嗅探是非常危险的


您应该尝试使用特征检测。有很多库可以帮你做到这一点。

浏览器嗅探不是编写JS代码的最佳方式

如果您喜欢jQuery,这里是

一些例子:

 if ($.browser.webkit) {
    alert( "this is webkit!" );
  }

var ua = $.browser;
  if ( ua.mozilla && ua.version.slice(0,3) == "1.9" ) {
    alert( "Do stuff for firefox 3" );
  }

if ( $.browser.msie ) {
    $("#div ul li").css( "display","inline" );
 } else {
    $("#div ul li").css( "display","inline-table" );
 }
用于检查浏览器是否支持它,甚至不必干扰版本检测。这有助于将来验证您的代码,并更准确地建模您真正想要做的事情


事实上,已经有:D

您可以这样做:

.multiplebgs div p {
  /* properties for browsers that
     support multiple backgrounds */
}
.no-multiplebgs div p {
  /* optional fallback properties
     for browsers that don't */
}
<![if (IE 6)|(IE 7)|(IE 8)]-->
<link type="text/css" rel="stylesheet" href="nocss3.css" />
<script type="text/javascript" src="nocss3.js"></script>
<![endif]-->

您可以使用库
Modernizer
(),该库检测并修复不同浏览器上对各种HTML 5和CSS3功能的支持

以下是他们在文档中关于CSS3转换的内容:

CSS转换是一个令人难以置信的过程 CSS3中有用的新部分。使用它们, 您可以让浏览器设置动画或 而是从一个国家过渡到另一个国家 其他的。您只需指定一个 开始和结束时,浏览器会显示 照顾其余的人

在Modernizer中,我们测试CSS 使用转换的转换 具有所有供应商前缀的属性

通常可以使用转换 没有使用Modernizer的特定CSS 类或JavaScript属性,但对于 那些场合你想要你生活的一部分 网站外观和/或行为不同 它们是可用的。这是一个很好的例子 案例是把现代化建设成一个国家 动画引擎,使用本机 浏览器中的CSS转换 拥有它,并依赖JavaScript来实现 浏览器中没有的动画

示例用法:


您可以查看本教程

IE8和IE7也不支持它们。我的理解是IE9不支持它,因为该特性本身不是一个最终的规范。使用草案规范的人让我非常恼火:$这看起来很有希望,我会试试看。做类似的事情。Dojo为每种浏览器类型定义了特殊的CSS类,允许您定义仅适用于特定浏览器的样式。因此,如果您还想要一个提供通用Javascript实用程序的库,您可以尝试避免将不同的库混合在一起。我喜欢Modernizer的地方在于它不是基于浏览器嗅探,而是基于功能检测。
a {
   color: #090;
   -webkit-transition: color .2s ease-out;
}
a:focus,
a:hover {
   color: #9f9;
}