具有不透明度并覆盖整个屏幕的背景图像

Background image with opacity and cover whole screen

一直在玩弄 CSS,但出于某种原因,我无法让图像覆盖整个屏幕。我设法将 opacity 调低,但图像不会覆盖屏幕。

<div class="backgroundImage">
    <img src="Image/BackgroundImage.jpg">
</div>

.backgroundImage{
    opacity: 0.4;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}

然而,如果我使用下面的代码,我可以让它覆盖整个屏幕,但 opacity 不会下降。因此,出于某种原因,它无法在 div 上运行。

html { 
    background: url(images/bg.jpg) no-repeat center center fixed; 
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}

您可以组合多个背景图像并将它们堆叠在一起。但是没有办法控制它们的不透明度。

    .backgroundImage {
    background-image: url('http://www.css3.info/wp-content/themes/new_css3/img/sheep.png'), url('http://lorempixel.com/300/400');
    background-position: center bottom, left top;
    -webkit-background-size: 80px 60px, cover;
    -moz-background-size: 80px 60px, cover;
    -o-background-size: 80px 60px, cover;
    background-size: 80px 60px, cover;
    background-repeat: repeat-x, no-repeat;
    width: 100%;
    height: 100vh;
}

在您的情况下,img 标签未关闭。它应该看起来像这样 <img src="Image.jpg">.

此外,您不能使用 background-size: 指定 img 的维度,您应该使用 width:height:

这是一个演示:https://jsfiddle.net/a1wvdpwc/17/ 我想这就是你想要的效果?

就给背景div宽高100%,位置固定。然后给它一个非常低的Z-index,这样它就留在最后面。然后,您还需要将图像的高度和宽度设置为 100%,以便它填满视口。 (在演示中我使用了 vh 和 vw;这意味着 viewport-width 和 viewport-height,作为百分比。)

该演示也在 scss 中,但唯一的区别是放置在 backgroundImage 样式中的 css Img 使用后代选择器,因此它以所有 Img 元素为目标div.backgroundImage。我已经把编译后的 css 放在这个答案中。

也很抱歉没有缩进。我在 phone 上输入了它。我会在几个小时内用更简洁的版本更新它。

html是:

<div class="backgroundImage">
      <img src="http://lorempixel.com/image_output/city-q-c-640-480-6.jpg" />
</div>
<div class="content">
    Content here
</div>

css是:

.backgroundImage {
    Position:fixed;
    Top: 0;
    Bottom: 0;
    Width: 100vh;
    Height: 100vh;
    Opacity: 0.25;
    Z-index: -5000;
}

.backgroundImage img {
    width:100vw;
    height: 100vh;
}
.content {
    padding: 30px;
}

另外我忘了补充,(据我所知)这种方法在语义上不太好,但如果你使用它应该不会太糟糕。

您可以使用 :before:after 的 CSS 个伪元素,并为其设置背景图像 + opacity。您可以将所有内容设置为 height:100%,或者直接在 div 上使用 height:100vh 以使其覆盖整个视口高度。

Jsfiddle Example

body {
  margin: 0;
}
.container {
  position: relative;
  height: 100vh;
}
.container:before {
  background: url("https://unsplash.it/500") center / cover;
  content: '';
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  z-index: -1;
  opacity: 0.5;
}
<div class="container">Yes!</div>