【问题标题】:Blurring part of background in a css background image cover [duplicate]在css背景图像封面中模糊部分背景[重复]
【发布时间】:2018-12-17 16:06:11
【问题描述】:

我目前正在尝试模糊包含内容的 div 后面的背景图像。问题是,这应该是为了响应式设计,所以我需要在大盒子的背景图像上使用封面属性。我似乎无法将里面盒子里的图片和后面的图片匹配起来。我尝试将较大的框设为相对,但随后 overflow:hidden 在较小的框上不再起作用。

<div class="container">
  <div class="block">
    <div class="blur">

    </div>
    <div class="content">
      <h3>
       A bunch of stuff
      </h3>
      <p>
       This is supposed to be content.
      </p>
      <p>
       That the box will wrap around
      </p>
    </div>
  </div>
</div>

.container{
    background: url('https://i.imgur.com/Q13QJrB.jpg') no-repeat center center;
    background-size: cover;
    width: 100%;
    height: 100%;
    overflow: auto;
}

.block{
    width: 50%;
    margin: 30px auto 30px auto;
    box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.40);
    position: relative;
}

.blur{
    background: url('https://i.imgur.com/Q13QJrB.jpg') no-repeat center center;
    background-size: cover;
    overflow: hidden;
    z-index: 50;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    filter: blur(10px);
}

.content{
  width: 100%;
  height: 100%;
  z-index: 100;
  position: relative;
}

https://jsfiddle.net/hy0mvpec/30/

我在网上看到的大多数示例要么使用一些 JS 库,在这种情况下我不想使用它,要么使用绝对容器的固定高度,要么使用现代浏览器中根本没有实现的 CSS 属性。

编辑:因为人们似乎对我想要什么感到过度困惑;

我想让小盒子的背景模糊。大多数解决方案似乎将背景图像重新应用到较小的框并尝试使其与较大的框匹配,因此它看起来像一个无缝的图像。

我认为这个问题应该更多地涉及使背景图像无缝化,而不管显示器的大小。

【问题讨论】:

  • 所以你想让背景完全模糊?
  • 我真的没有得到你想要的最终结果
  • 不行,我想让block元素的背景虚化,还要匹配容器元素中的图片。问题是,我使用 background-position:cover 属性,因为我不希望在某些设备上使用的图像出现奇怪的尺寸问题,我需要使用它,因为它需要响应。但正因为如此,我不知道如何匹配较小容器中的图像。
  • 所以你想让图像完全模糊?
  • 没有。我希望里面有内容的小盒子的背景模糊,但背景看起来像是一个无缝的图像。

标签: html css


【解决方案1】:

不确定这是否是您的预期输出:检查更新的小提琴https://jsfiddle.net/nw3spoLz/

我在你的模糊 div 上添加了比例

.block{
    width: 50%;
    margin: 30px auto 30px auto;
    box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.40);
    position: relative;
    overflow: hidden;
}

.blur{
    background: url('https://i.imgur.com/iKvNL2a.jpg') no-repeat center center;
    background-size: cover;
    overflow: hidden;
    z-index: 50;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    transform: scale(2);
    filter: blur(10px);
}

.container{
    background: url('https://i.imgur.com/iKvNL2a.jpg') no-repeat center center;
    background-size: cover;
    width: 100%;
    height: 100%;
    overflow: auto;
}

.block{
    width: 50%;
    margin: 30px auto 30px auto;
    box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.40);
    position: relative;
    overflow: hidden;
}

.blur{
    background: url('https://i.imgur.com/iKvNL2a.jpg') no-repeat center center;
    background-size: cover;
    overflow: hidden;
    z-index: 50;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    transform: scale(2);
    filter: blur(10px);
}

.content{
  width: 100%;
  height: 100%;
  z-index: 100;
  position: relative;
}
<div class="container">
  <div class="block">
    <div class="blur">

    </div>
    <div class="content">
      <h3>
       A bunch of stuff
      </h3>
      <p>
       This is supposed to be content.
      </p>
      <p>
       That the box will wrap around
      </p>
    </div>
  </div>
</div>

【讨论】:

  • 这是我所期望的输出,但是,在这种情况下,由于图像的格式,放大在这个上完美地工作。我只是将其发布为示例。我正在使用的图像,由于比例,我无法以完全匹配更大图像的方式放大,因为我无法缩放到小数点后 2 位。所以它要么有点太大,要么有点太小。一旦我以调整内容大小的方式调整显示大小,这也会停止工作。
  • 如果您可以使用与原始图像具有相同比例的图像添加您的问题,那将是获得所需输出的更简单方法。
  • 我把OP图改成和我原图一样比例的。您会看到图像略有偏差,如果您希望它精确,则需要进行超过 2 位小数的缩放。另一个问题是,当您将视口大小调整到容器比例发生变化的点时,图像不再跟随。
  • 嗨,sefam,我刚刚尝试了同样的技巧,似乎它正在工作,检查这里jsfiddle.net/s4at0omu
猜你喜欢
  • 1970-01-01
  • 2013-10-22
  • 2016-11-16
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
相关资源
最近更新 更多