【问题标题】:Fire jQuery on resize and browser width在调整大小和浏览器宽度时触发 jQuery
【发布时间】:2014-03-25 14:38:33
【问题描述】:

我在 IE 中遇到了背景大小的问题,所以我找到了一个允许它在 IE 中工作的 JavaScript,但我只希望在屏幕宽度低于 768 像素时应用背景大小。

这是我当前的脚本:

$(window).resize(function() {
    if($(window).width() > 768)
       jQuery('#header').css( "background-size", "cover" );
});

一旦你开始调整大小,这就会起作用,但是一旦你低于 768,它就不会删除背景大小,并且初始状态也没有背景大小。有任何想法吗?谢谢!

【问题讨论】:

  • 你为什么使用JQ?你可以在你的 css 文件中使用 @media 来做到这一点
  • if($(window).width() > 768) do one thing; else do other;应该就是这么简单,还是我漏了什么?
  • 就像我说的,背景大小在 IE 中不起作用,所以我必须使用 JavaScript。
  • @user13286 ,如果 background-size 在 IE 上不起作用,如果你这样使用它,它在 IE 上也不起作用 :),尝试另一种方式,因为你正在做与 CSS 相同的事情跨度>
  • 效果很好,我已经测试过了。我使用的 Javascript 是专门为此用途而设计的。 github.com/louisremi/jquery.backgroundSize.js

标签: javascript jquery css background-size


【解决方案1】:

您的答案几乎是正确的。您需要做的就是添加一个 else。

$(window).resize(function() {
    if($(window).width() > 768) {
       jQuery('#header').css( "background-size", "cover" );
    } else {
       jQuery('#header').css( "background-size", "whatever" );
    }
});

我担心你会到处乱写jQuery,所以你也可以这样做:

jQuery(function( $ ) { // DOM ready and secured jQuery's $ alias

  // Use freely $ alias
  var $header = $('#header'); // Cache your selectors
  $(window).resize(function() {
    $header.css({backgroundSize:$(this).width()>768?"cover":"whatever"});
  });

  // Other $ code here

});

【讨论】:

  • 谢谢,如果我只放一组空引号,是否会删除 background-size 属性?
【解决方案2】:

无需 javascript,只需使用 css 和媒体查询。 这比 jQuery/javascript 快很多,而且正好适合这种情况。尤其是在手机上,您会在旋转设备时注意到这一点。此外,较旧的浏览器在调整大小时会减少锯齿。

#header{
    /* style for the older browsers, also basic info like maybe height/width */
} 

@media screen {
    #header{
        background-size : cover;
        /* Other css, not defined in the #header{} above, for modern browsers */
    } 
}

小提示:媒体查询不适用于旧版浏览器。您可以利用它来发挥自己的优势,并仅在 mediaquery 中设置现代浏览器的样式。
请记住,背景大小不起作用,所以你不能使用它

【讨论】:

  • 添加了反向版本,这样IE8就不会出问题了
  • 我删除了 +1 一秒钟只是因为你的回答暗示IE8 有关于background-size 的线索......所以两种方式翻转或不翻转对我来说仍然没有意义;)希望它有帮助(P.S. 我会留下类似“如果你不需要支持旧版浏览器...... bla bla”)
  • 我去掉了reverse的方法,加了个注释
  • 不要投反对票,也不要发表评论。但我可以在我的收件箱中看到您的评论,并且我已经更新了我对适用于两种类型浏览器的解决方案的回答
  • 我不是反对投票者 brosky... 你永远不会知道谁反对关注其他问题而不是一个反对票。或者改进你的答案,有时投票者会回来查看答案是否得到改进以重新获得失去的 -1 分。
猜你喜欢
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多