修复了没有设置高度的背景图像

Fixed background image without a set height

我有一个 div 元素,它必须有一个固定的背景图像,这样当您滚动时内容就会滚动到它上面。我的问题是我必须为特定的 div 元素设置高度才能看到它。那是因为div.

里面没有任何内容

CSS

#top-banner{
    background-image: url(../img/grey.jpg);
    background-attachment:fixed;
    height:700px;
    background-repeat: no-repeat;
    background-size: 100% auto;
}

HTML

<div class="container-fluid">
    <div class="row" >
        <div class="col-sm-12" id="top-banner"></div>
    </div>
    <div class="row">
        <div class="col-sm-12 text-center" >
            <h1 class="band-name">Lorem Ipsum</h1>
        </div>
    </div>
</div>

这给了我想要的大屏幕:

但是当您缩小浏览器时,就像您在 phone 或平板电脑上一样,div 的高度会将所有内容向下推,使其看起来没有吸引力:

有没有办法不给它一个特定的高度,这样内容就不会在较小的屏幕上被向下推,但仍然有固定的背景图像?

编辑 这里有一个 fiddle 可以查看。 http://jsfiddle.net/0xbfhwnt/

我重申:一开始看起来不错,但是当您缩小浏览器时,图像会像预期的那样缩小,但 div 的高度保持不变图片下方的内容而不是与背景图片齐平 div。

您是否考虑过媒体查询方面的问题?

这是第一次迭代:

http://jsfiddle.net/0xbfhwnt/2/

@media (min-width: 400px) and (max-width: 700px) {
 #top-banner{
    height: 200px;   }

}

@media (min-width: 200px) and (max-width: 399px) {
 #top-banner{
    height: 100px;   }

}

更新

因此,使用媒体查询,您可以跟踪主要 div 的大小一直到最小的屏幕大小。

在这个例子中,所有的空格都没有了。

http://jsfiddle.net/0xbfhwnt/7/

@media (min-width: 500px) and (max-width: 800px) {
 #top-banner {
    height: 200px;}
}

@media (min-width: 375px) and (max-width: 499px) {
 #top-banner {
    height: 150px;}
}

@media (min-width: 250px) and (max-width: 374px) {
 #top-banner {
    height: 100px;}
}

@media (min-width: 50px) and (max-width: 249px) {
 #top-banner {
    height: 50px;}
}

当然,min-widthmax-width之间的范围越小,过渡就越平滑。