【问题标题】:jQuery change width of img on resize works but not on maximizejQuery在调整大小时改变img的宽度,但不是最大化
【发布时间】:2014-01-24 17:25:36
【问题描述】:

编辑/已解决:原因是我没有为窗口宽度大于 1268 的情况设置宽度,这对平滑调整大小无关紧要,但如果您通过最大化跳转到高于 1268 的值,则确实如此。


如果我手动调整窗口大小,受影响的 div(.bannerbild、.banner)也会调整大小。不幸的是,他们没有在最大化窗口时这样做。

#dimension div 在手动调整大小和最大化时显示正确的宽度和高度。

我在 Chrome、IE、FF 和 Opera 的最新版本中对此进行了测试。

编辑:我必须改写一下:如果窗口最大化然后“未最大化”,那么 div 确实会调整大小。 (但当我再次点击最大化按钮时,它们不会调整到最大宽度......)

var slideamount; 

function dim() {
    var width = $( window ).width();
    var height = $( window ).height();
    $("#dimensions").html(width + " x " + height);

    if ($( window ).width() <= 1268){
        $(".bannerbild").css({"width":$( window ).width()});
        $(".banner").css({"width":$( window ).width()});
        $("#main").css({"width":$( window ).width()});
    }   

    if($( window ).width() <= 1268) {
        slideamount = "-=" + ($( window ).width());
        return slideamount;
    }
    else {
        slideamount = "-=1268px"
        return slideamount;
    }           
}

dim();

$( window ).resize(function() {
    dim();  
});

【问题讨论】:

  • 这意味着你的dim()在调整大小时不会被调用。
  • 如果你创建一个jsfiddle.net会很好
  • @Anup 调用 dim() 是因为 #dimensions 是正确的,并且在所有手动调整大小(单击按住调整大小)时也会调用 dim()。我会设置一个小提琴。

标签: jquery


【解决方案1】:

一旦屏幕宽度恢复到大于 1268 像素,您就不会调整 div 的大小。您只会在 div 变小时调整其大小。我不确定 div 的原始宽度是多少,但只需将下面代码中的值替换为正确的值。

试试这个:

var slideamount; 

function dim() {
    var width = $( window ).width();
    var height = $( window ).height();
    $("#dimensions").html(width + " x " + height);

    if ($( window ).width() <= 1268){
        $(".bannerbild").css({"width":$( window ).width()});
        $(".banner").css({"width":$( window ).width()});
        $("#main").css({"width":$( window ).width()});
    }
    else {

        // Set this how ever you like for your original width
        var originalWidth = "1000px"; 

        // Set the widths of the divs back to their original values that you set
        $(".bannerbild").css({"width": originalWidth);
        $(".banner").css({"width": originalWidth);
        $("#main").css({"width": originalWidth);
    }   

    if($( window ).width() <= 1268) {
        slideamount = "-=" + ($( window ).width());
        return slideamount;
    }
    else {
        slideamount = "-=1268px"
        return slideamount;
    }           
}

dim();

$( window ).resize(function() {
        dim();  
});

【讨论】:

  • 如果是这样,为什么它会手动正确调整大小(它也会变大,而不仅仅是变小)?
  • 如果你提供一个 jsfiddle 我可以看更多。由于没有 HTML,我不能肯定地说。
  • 没关系,如果我添加你的 3 行就可以了。我只是不明白为什么 div 会在手动调整大小时正确调整大小......实际上我这样做了,因为它会在低于 1268 时一直调整大小,但一旦超过 1268 就不会调整大小,当我最大化时会发生这种情况让我们说675 到 1900。感谢@tokyovariable
  • 您的 if 语句的条件只有在屏幕大于 1268 像素之前才会为真。之后条件不再成立,因此它永远不会被调用。这就是为什么如果您最大化屏幕并且其大于 1268 像素,则会触发条件。
【解决方案2】:

试试这个:

$(window).on('load resize', function(){
   dim();
});

拉出函数外部的变量声明并在函数内部使用该变量,如下所示:

var slideamount; 
var $width = $( window ).width();
var $height = $( window ).height();
function dim() {

    $("#dimensions").html(width + " x " + height);

    if ($width <= 1268){
        $(".bannerbild, .banner, #main").css({"width":$width});
    }   

    if($width <= 1268) {
        slideamount = "-=" + $width;
        return slideamount;
    }
    else {
        slideamount = "-=1268px"
        return slideamount;
    }           
}

dim();

$( window ).on('load ready',function() {
    dim();  
});

【讨论】:

  • 这似乎没有帮助。
  • 如果我复制该代码,则不会显示 div。如果我只拉出变量并保持其余部分不变,它会显示 div 而不是正确的#dimensions 这让我相信,函数外部的变量没有传递给函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
相关资源
最近更新 更多