将重复背景图像与容器底部的非重复背景图像对齐

时间:2014-04-01 15:35:18

标签: javascript jquery css

我有一个可变大小的容器,它有一个重复的背景图块,可以拉伸以任何宽度填充容器。我需要容器的高度,使其始终是1个瓷砖高度的倍数 - 这样我就可以将容器的底部与一个端部无缝对齐' tile是以下容器的bg图像。 我试图用jQuery做,但我的代码不起作用......

注意:重复的背景必须从TOP开始,因为它上面有另一块它连接起来(所以在这种情况下,设置背景块从底部重复的解决方案不适用 - 那就是' ll只是在顶部打破它) 我需要javascript才能正常工作,而不是只改变CSS。

小提琴:http://jsfiddle.net/nRe7R/1/

这是JS:

function seamlessBottomBg() {
    var container = $('#container1');
    var bgTileAspectRatio = 65/1163;
    var tileWidth = container.outerWidth();
    var tileHeight = tileWidth * bgTileAspectRatio;
    //calculate how many px high the 'cutoff' last bg tile is, if there is a cutoff part
    var cutOffTileHeight = container.outerHeight() % tileHeight;
    if(cutOffTileHeight !== 0) {
    container.css('padding-bottom', tileHeight-cutOffTileHeight+1+'px'); 
        }
    }
seamlessBottomBg();

和CSS:

#container1 {
    background-size: contain;
    background-image: url(http://img.photobucket.com/albums/v488/fishygirl/paper-repeating_zps52e98fe2.jpg);
    background-repeat: repeat-y;
    width: 80%;
    margin: 0 auto;
    padding: 3em 10% 0;
    max-width: 1200px;
}
#container2 {
    background-size: contain;
    background-image: url(http://img.photobucket.com/albums/v488/fishygirl/paper-bg-bottom_zps441e1bc3.jpg);
    background-repeat: no-repeat;
    width: 80%;
    margin: 0 auto;
    padding: 3em 10% 0;
    max-width: 1200px;
}

2 个答案:

答案 0 :(得分:1)

我相信如果您将背景图片设置为bottom,它会向上重复。不确定这是不是你想要的,但这里是fiddle

#container1 {
    background-size: contain;
    background-image: url(http://img.photobucket.com/albums/v488/fishygirl/paper-repeating_zps52e98fe2.jpg);
    background-repeat: repeat-y;
    background-position: bottom;
    width: 80%;
    margin: 0 auto;
    padding: 3em 10% 0;
    max-width: 1200px;
}

答案 1 :(得分:1)

DEMO (尝试调整大小)

添加以下规则:

#container1 {
  background-size:center bottom;
}

#container2 {
  background-size:center top;
}

@media (min-width:1024px) { /* 1024px is based on the image's width */
    #container2 {
        background-size: cover;
    }
}