带有Respond.js的Modernizr

我正在仔细评估利用Modernizr和Respond.js进行响应式devise的最佳方法,并为社区提出了一些问题。

首先,我的理解是,在将Modernizr与Respond.js捆绑在一起时,在IE8及以下版本中不需要其他编码或testing来支持媒体查询。 换句话说,当Respond.js与Modernizr捆绑在一起时,我只需要在源代码中加载Modernizr就可以使Respond.js处于活动状态。 正确?

其次,你认为这是IE8及以下版本中支持媒体查询的最有效方法吗? 从本质上讲,我将会包含比现在支持媒体查询的浏览器更大的Modernizr脚本。 如果对媒体查询的testing失败,分离这两个脚本并仅加载Respond.js会不会更高效?

第三,如果我想分离这两个脚本,您认为如果需要,加载Respond.js的最佳方法是什么? 一种select是使用IE特定的条件注释来加载响应。 另一种select是使用yepnope和Modernizr来testing媒体查询支持,并在需要时加载Respond。 哪一个会更有效和防错。

最后,如果我select分开这两个脚本,并使用Modernizr加载响应,如果需要我遇到了以下两种技术:

<script> yepnope({ test : Modernizr.mq('(only all)'), nope : ['js/libs/respond.min.js'] }); </script> 

要么

 <script>Modernizr.mq('(min-width:0)') || document.write('<script src="js/libs/respond.min.js"><\/script>')</script> 

我发现第二次崩溃的IE8,但必须只需要重写。 你会推荐哪种技术?

感谢所有的帮助。

首先,我的理解是,在将Modernizr与Respond.js捆绑在一起时,在IE8及以下版本中不需要其他编码或testing来支持媒体查询。 换句话说,当Respond.js与Modernizr捆绑在一起时,我只需要在源代码中加载Modernizr就可以使Respond.js处于活动状态。 正确?

那么你至less需要一些CSS3媒体查询来开始。 Respond.js实质上只是一个不支持它们的浏览器的媒体查询的JavaScript实现(例如,IE小于8)。 只要确保在您的CSS3媒体查询( 链接 )后引用Respond.js。

所以,是的,假设你有一个自定义的构build或其他任何与Modernizr捆绑在一起的Respond.js,并且在你的CSS3之后加载,你都很好。 另外,Modernizr需要更多的configuration在你的HTML( 链接 )

其次,你认为这是IE8及以下版本中支持媒体查询的最有效方法吗? 从本质上讲,我将会包含比现在支持媒体查询的浏览器更大的Modernizr脚本。 如果对媒体查询的testing失败,分离这两个脚本并仅加载Respond.js会不会更高效?

Modernizr 不支持没有媒体查询的浏览器 。 您需要将其添加到自定义版本中。 所以,是的,我认为总是包括回应是很明智的。 缩小了,库只增加了3kb以上,并且包含在Modernizr文件中不会添加另一个GET请求。 我只是说,把它留在那里为一切准备。

第三,我会用Modernizr方法去。 我喜欢使用新的东西,所有额外的JavaScript阻碍。

新版本的响应包括一些functiontesting,所以你不需要Modernizr或Yepnope!

这是修订: https : //github.com/scottjehl/Respond/commit/4d60f45716b8395e6f24238f9dc5e34c857e87f2

包括主要的respond.js函数外部的window.matchMedia polyfill。 这个polyfill的源代码在这里是paulirish/matchMedia.html ,包括它的开箱即用会使事情更容易更新,并且允许对那些已经包括更小的文件压缩它通过Modernizr或其他(如果你是,你可以从Respond.js删除它)。

此外,您应该注意,使用yepnope.js可能会导致在媒体查询样式被parsing和应用之前看到非媒体查询样式的延迟。 build议你把respond.js放在头文件中,尽可能地避免这种情况,尽pipe如此,把你的js文件放在页脚中也是很好的select。

functiontesting可能在像tkane2000说的更新的库…只是想提及你可以通过Modernizr做到这一点:

  <script> Modernizr.load({ test: Modernizr.mq('only all'), nope: 'js/respond.min.js' }); </script> 

原来的海报我认为无效的媒体查询检查'(只有所有)'…不应该是任何括号的基础上,我读了一些东西。 一旦我删除了parens,respond.js似乎被包含在内。