【问题标题】:javascript image resize windowjavascript图像调整窗口大小
【发布时间】:2013-10-15 11:35:10
【问题描述】:

我为我的网站开发的 JavaScript 有问题。我的图片在悬停在它们上方时会打开。

首先我的脚本会计算图像应该显示在窗口的右侧还是左侧:

$("html,body").live("mousemove", function (e) {
    //console.log("mousemove: "+e.pageX)  
    var width_window = $(window).width();
    var center = width_window / 2;
    if (e.pageX < center) {
        side = 'left';
    } else {
        side = 'right';
    }
});

然后,一旦我们知道图像将显示在窗口的哪一侧,我就有另一个脚本来调整图像的大小,这取决于我的窗口的高度和宽度,包括边距:

this.resizeImg = function (img, offset) {
    var d = new Date();
    //console.log(d, side);

    var window_height = $(window).height();
    var img_height = $(img).height();
    var img_top = $(img).offset().top;

    var window_width = $(window).width();
    var img_width = $(img).width();
    var img_left;
    side == 'left' ? img_left = offset.left : img_left = window_width - offset.left;

    console.log(window_width, img_left)
    var image_resize_height = window_height - img_top - 20;
    var image_resize_width = window_width - img_left - 20;

    if (img_height + img_top > window_height && img_width + img_left > window_width) {
        console.log("h w")

        if (image_resize_width > image_resize_height) {
            $(img).css('height', image_resize_height + 'px').css("width", "auto");
        } else {
            $(img).css('width', image_resize_width + 'px').css("height", "auto");
        }

    } else if (img_height + img_top > window_height) {
        //console.log("h")
        $(img).css('height', image_resize_height + 'px').css("width", "auto");
    } else if (img_width + img_left > window_width) {
        //console.log("w")
        $(img).css('width', image_resize_width + 'px').css("height", "auto");
    } else {
        //console.log("non")
    }
};

它几乎可以工作,但有时我的图像超出了窗口的宽度或高度。我找不到解决方案...

这是我的 CSS:

.vignette {
        max-height: 800px;
        max-width : 800px;
        z-index : 2;
        top : 25px;
}

.info{
    position : relative;
}

.info img {
    position : absolute;
    display : none;
    cursor : pointer;
}

我在 jsFiddle 中的完整脚本:http://jsfiddle.net/CrnNZ/

这是我网站的链接:http://olivierlellouche.com/

非常感谢您的帮助!

【问题讨论】:

    标签: javascript image-resizing mousemove css


    【解决方案1】:

    您是否注意将图像向下移动25px

    .vignette {
        top : 25px;
    }
    

    我看到的唯一高度调整是20px

    var image_resize_height = window_height - img_top - 20;
    

    您可能只需要在计算中再减去几个像素?

    或者更好:

    var img_top = $(img).offset().top;
    

    可能是偏移区域的顶部,而不是图像的原始顶部。在这种情况下,您仍然需要为此减去 25px。

    (来自您的网站)可能有用的另一件事是始终启用或始终禁用右侧的垂直滚动条。或者当它们不是滚动条时,将文本区域的大小重新调整为小于可用区域。 (不幸的是,我根本无法让你的 jsfiddle 工作,我能看到的唯一错误是垂直计算错误。我看不到任何水平错误。)

    如果从高度上再减去几个像素,问题还会继续吗?

    我无法从您的代码中看出,但它会放置图像然后重新调整大小吗?在尝试放置图像之前计算可用尺寸可能会更好,这样一旦放置它就永远不会改变尺寸。

    编辑:

    看了你的网页小得多的窗口后,我想到了别的东西。 $(window).height()$(document).height() 不同。请参阅:$(window).height() vs $(document).height 如果它们不一样,您可能需要以不同的方式计算剩余页面。

    【讨论】:

    • 感谢 Abaines,我已经对我的代码进行了一些更正,我需要检查 $(window).height() 和 $(document).height()。谢谢你的帮助,我会告诉你的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2012-08-07
    • 2017-04-29
    • 2021-10-02
    • 2019-06-17
    • 1970-01-01
    相关资源
    最近更新 更多