如何消除页面右侧的不希望有的白色边框?

该网站基本上可以动态调整网格上图像的大小,这是一个视频:https://vine.co/v/h2wtnw6K3H0

CSS:

body {

    height: 100%;
    width: 100%;
    margin: 0;
}

grid {

    height: 100%;
    width: 100%;
}

.gridImage {

    vertical-align: bottom;

    margin-left: 0px;
    margin-right: 0px;
    margin-top: 0px;
    margin-bottom: 0px;
}


JS:

function resize() {

    console.log($(window).width());

    var newBody = "";

    for (var i = 0; i <= 100; i++) {

        newBody += '<img class="gridImage" src="Images/image2.jpg" width="' + $(window).width() / Math.floor(($(window).width() / 100)) + 'px" height="' + $(window).width() / Math.floor(($(window).width() / 100)) + 'px">';
    }

    document.getElementById("grid").innerHTML = newBody;
}


如果我的边距为零,为什么会显示出来?我有什么想念的吗?谢谢。

最佳答案

Ridcully已解决了问题所在,但这是解决方案。

首先,您需要计算每个图像的所需宽度。这只是包装在Math.ceil()中的当前方程式。

var windowWidth = $(window).width() // A slight performance improvement, plus cleaner code
var maxImageWidth = <your value here>

var unroundedImageWidth = windowWidth / Math.floor(windowWidth / maxImageWidth)
var   roundedImageWidth = Math.ceil(unroundedImageWidth)


除非您的图像完美匹配,否则这将使每一行都比窗口稍宽,从而导致每行上的最终图像都换行到下一行。为避免这种情况,您需要将gridContainer的宽度设置为每行的宽度。

$('.gridContainer').width(windowWidth * roundedImageWidth / unroundedImageWidth)


除了一件事:水平滚动条,其他所有内容都应该看起来不错。但是,这很容易解决。将此添加到您的CSS:

.gridContainer {
    overflow-x: hidden;
}


这将同时隐藏滚动条和每行最后的几个像素。完善!好吧,不完全是。

这种方法的问题在于,每行一幅图像对其他所有图像都具有命中率(丢失像素)。如果您的图片很小,每行有很多图片,那么最终可能会损失很大一部分。

为避免这种情况,您可以向上舍入图像宽度,并将溢出分布在行中的所有图像之间。这比以前的方法稍微复杂一点,但是确实可以提供更好的结果。

您还需要计算三个数字。

var imagesPerRow = windowWidth / unroundedImageWidth
var numOfRows = Math.ceil($('.gridContainer img').length / imagesPerRow)
var spillage = windowWidth / roundedImageWidth - windowWidth // Pixels we have to lose


现在,只需分配泄漏物即可。

var i = 0 // Loop counter

while (spillage !== 0) {
     // Set the width of all images in column i to the width of that column - 1
     $('.gridContainer img:nth-child(' + imagesPerRow + 'n-' + (i+1) + ')')
         .width($('.gridContainer img:nth-child(' + (i+1) + ')').width() - 1)

    spillage--
    i++
}


图像宽度之间的像素差不应超过一个。

07-28 08:32