15

我试图弄清楚如何在 div 全宽和响应式中制作背景图像。背景图像在页面的宽度上扩展(并且是响应式的),但图像的高度不是它的全高。好像不知何故被切断了。我正在使用引导框架,我尝试这样做的原因是我想在图像上覆盖一些文本。我尝试了很多不同的东西,但似乎无法弄清楚,求助!

<div class="bg-image">
  <div class="container">
    <div class="row-fluid">
      <div class="span12">
        <h1>This is some text</h1>
      </div>
    </div>
  </div>
</div>


  .bg-image {
  background: url(img/image.jpg) no-repeat center top;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
  max-height: 450px;
  }
4

3 回答 3

14

这是获得所需设计的一种方法。

从以下 HTML 开始:

<div class="container">
    <div class="row-fluid">
        <div class="span12">
            <div class="nav">nav area</div>
            <div class="bg-image">
                <img src="http://unplugged.ee/wp-content/uploads/2013/03/frank2.jpg">
                 <h1>This is centered text.</h1>
            </div>
            <div class="main">main area</div>
        </div>
    </div>
</div>

请注意,背景图像现在是文档常规流程的一部分。

应用以下 CSS:

.bg-image {
    position: relative;
}
.bg-image img {
    display: block;
    width: 100%;
    max-width: 1200px; /* corresponds to max height of 450px */
    margin: 0 auto;
}
.bg-image h1 {
    position: absolute;
    text-align: center;
    bottom: 0;
    left: 0;
    right: 0;
    color: white;
}
.nav, .main {
    background-color: #f6f6f6;
    text-align: center;
}

这是如何工作的

图像被设置为宽度为 100% 的常规流内容,因此它会根据父容器的宽度进行自我调整。但是,您希望高度不超过 450px,这对应于 1200px 的图像宽度,因此将图像的最大宽度设置为 1200px。您可以使用display: block和使图像居中margin: 0 auto

使用绝对定位将文本绘制在图像上。在最简单的情况下,我将元素拉伸h1为父元素的全宽并用于text-align: center 使文本居中。使用顶部或底部偏移量将文本放置在需要的位置。

如果您的横幅图像的宽高比会发生变化,您将需要调整最大宽度值以.bg-image img动态使用 jQuery/Javascript,但除此之外,这种方法有很多好处。

参见演示:http: //jsfiddle.net/audetwebdesign/EGgaN/

于 2013-06-29T17:57:59.407 回答
9

当你使用background-size: cover背景图像时会自动拉伸以覆盖整个容器。但是,纵横比保持不变,因此您将始终丢失图像的一部分,除非图像的纵横比和应用它的元素相同。

我看到两种方法可以解决这个问题:

  • 不要通过设置来 保持图像的纵横比background-size: 100% 100%这也会使图像覆盖整个容器,但不会保持比例。缺点是这会扭曲您的图像,因此可能看起来很奇怪,具体取决于图像。使用您在小提琴中使用的图像,我认为您可以摆脱它。

  • 您还可以使用 javascript根据其宽度计算和设置元素的高度,因此它与图像的比例相同。此计算必须在加载和调整大小时完成。几行代码应该很容易(如果您想要一个示例,请随时询问)。这种方法的缺点是你的宽度可能会变得非常小(在移动设备上),因此计算出的高度也会变得非常小,这可能会导致容器的内容溢出。这也可以通过更改内容的大小或其他方式来解决,但它增加了解决方案的一些复杂性/

于 2013-06-29T18:45:26.073 回答
0

I also tried this style for ionic hybrid app background. this is also having style for background blur effect.

.bg-image {
   position: absolute;
   background: url(../img/bglogin.jpg) no-repeat;
   height: 100%;
   width: 100%;
   background-size: cover;
   bottom: 0px;
   margin: 0 auto;
   background-position: 50%;


  -webkit-filter: blur(5px);
  -moz-filter: blur(5px);
  -o-filter: blur(5px);
  -ms-filter: blur(5px);
  filter: blur(5px);

}

于 2017-05-16T09:14:45.567 回答