在模糊背景 div 中取消模糊内容

Posted

技术标签:

【中文标题】在模糊背景 div 中取消模糊内容【英文标题】:Unblur content inside blurring background div 【发布时间】:2019-07-03 02:31:43 【问题描述】:

所以我真的很喜欢https://www.w3schools.com/howto/howto_css_blurred_background.asp 的这种特殊效果,您可以在其中模糊背景并显示文本。我目前遇到的问题是我想在我的第一个内容下方为我的第二个内容添加另一个壁纸。第一个内容不错。现在我希望我的第二个内容在您滚动时出现在第二个壁纸中。有点像创建视差效果,但我正在创建自己独特的网站。

这一次我想要一个模糊的背景(第二张壁纸),同时将我想要的东西放在我想要的位置并让它聚焦。

有没有办法做到这一点?

bg-image2 开始,我想要h1p,在bg-image2 内聚焦模糊的背景图像。

注意: 壁纸不会显示在下面的 sn-p 中,因为我已经在位于我的计算机中的文件夹中找到了我需要的图片.

body,
html 
  height: 100%;


* 
  box-sizing: border-box;


.bg-image 
  /* The image used */
  background-image: url("images/wallpaper1.jpg");
  /* Add the blur effect */
  filter: blur(8px);
  -webkit-filter: blur(8px);
  /* Full height */
  height: 100%;
  /* Center and scale the image nicely */
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;



/* Position text in the middle of the page/image */

.bg-text 
  background-color: rgb(0, 0, 0);
  /* Fallback color */
  background-color: rgba(0, 0, 0, 0.4);
  /* Black w/opacity/see-through */
  color: white;
  font-weight: bold;
  border: 3px solid #f1f1f1;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 2;
  width: 80%;
  padding: 20px;
  text-align: center;


.bg-image2 
  /* The image used */
  background-image: url("images/wallpaper2.jpg");
  /* Add the blur effect */
  filter: blur(8px);
  -webkit-filter: blur(8px);
  /* Full height */
  height: 100%;
  /* Center and scale the image nicely */
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;


.profilePicture 
  position: absolute;
  left: 50%;
  margin: 200px auto;
  transform: translate(-50%, -50%);
<div class="bg-image"></div>

<div class="bg-text">
  <h1>My name is ***</h1>
  <p>And I am a website</p>
</div>


<div class="bg-image2">

  <!-- This is the part where I want my stuff to not be blurred and focus -->
    
  <div class="profilePicture">
    <img src="images/profilePic.jpg" style="width: 170px; height: 170px; border-radius:50%;">
    <h1>This is a title</h1>
    <p>This is just a paragraph</p>
  </div>

</div>

【问题讨论】:

您能不能在将背景图像作为背景图像之前先用过滤器(使用 Photoshop 之类的东西)模糊背景图像,然后将过滤器 css 全部移除? @KJEK-Code 对的好点。我想我会坚持使用其他工具对照片进行造型,然后让我的网站变得有点复杂,因为所有这些疯狂的编码。 Azazel 祝你好运 【参考方案1】:

这是您正在寻找的结果吗?

https://codepen.io/anon/pen/exVRyy

我所做的只是围绕bg-image2profilePicture 创建一个div,这样bg-image2 上的模糊就不会影响profilePicture,然后将该div 设置为position:relative;,这样@ 987654327@ 可以像你一样放在中间。

这是您编辑的 HTML:

<div class="bg-image"></div>

<div class="bg-text">
    <h1>My name is ***</h1>
    <p>And I am a website</p>
</div>

<div class="bg-test">
  <div class="bg-image2">

    <!-- This is the part where I want my stuff to not be blurred and focus -->

  </div>

  <div class="profilePicture">
      <img src="https://images.pexels.com/photos/1253661/pexels-photo-1253661.jpeg?cs=srgb&dl=android-wallpaper-bluhen-blume-1253661.jpg&fm=jpg" style="width: 170px; height: 170px; border-radius:50%;">
      <h1>This is a title</h1>
      <p>This is just a paragraph</p>
    </div>
</div>

还有 CSS:

body,
html 
  height: 100%;


* 
  box-sizing: border-box;


.bg-image 
  /* The image used */
  background-image: url("https://images.unsplash.com/photo-1507608616759-54f48f0af0ee?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&w=1000&q=80");
  /* Add the blur effect */
  filter: blur(8px);
  -webkit-filter: blur(8px);
  /* Full height */
  height: 100%;
  /* Center and scale the image nicely */
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;



/* Position text in the middle of the page/image */

.bg-test 
  position:relative;


.bg-text 
  background-color: rgb(0, 0, 0);
  /* Fallback color */
  background-color: rgba(0, 0, 0, 0.4);
  /* Black w/opacity/see-through */
  color: white;
  font-weight: bold;
  border: 3px solid #f1f1f1;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 2;
  width: 80%;
  padding: 20px;
  text-align: center;


.bg-image2 
  /* The image used */
  background-image: url("https://whatthenewsblog.files.wordpress.com/2015/03/ecl-ann.jpg");
  /* Add the blur effect */
  filter: blur(8px);
  -webkit-filter: blur(8px);
  /* Full height */
  height: 100vh;
  /* Center and scale the image nicely */
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;


.profilePicture 
  position: absolute;
  left: 50%;
  top:50%;
  margin: 0 auto;
  transform: translate(-50%, -50%);

【讨论】:

不错的干净示例和许多 cmets。干得好。 如果您将代码添加到 SO 中的答案中以使其自给自足,那就太好了。如果 Pen 被删除和/或不可用,答案将变得不完整,因此对社区毫无用处。 好主意。完成!【参考方案2】:

我遇到了类似的问题。经过大量搜索,我找到了完美的解决方案。 你可以使用backdrop-filter

您的代码:

body,
    html 


      height: 100%;
    
    
    * 
        padding: 0px;
        margin: 0px;
      box-sizing: border-box;
    
    
    .bg-image 
      /* The image used */
      background-image: url("https://images.unsplash.com/photo-1507608616759-54f48f0af0ee?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&w=1000&q=80");
      /* Add the blur effect */
      
      /* Full height */
      height: 100%;
      /* Center and scale the image nicely */
      background-position: center;
      background-repeat: no-repeat;
      background-size: cover;
    
    
    
    /* Position text in the middle of the page/image */
    
    .bg-test 
      position:relative;
    
    
    .bg-text 
      background-color: rgb(0, 0, 0);
      /* Fallback color */
      background-color: rgba(0, 0, 0, 0.4);
      /* Black w/opacity/see-through */
      color: white;
      font-weight: bold;
      backdrop-filter: blur(8px);
      border: 3px solid #f1f1f1;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      z-index: 2;
      width: 80%;
      padding: 20px;
      text-align: center;
    
    
    .bg-image2 
      /* The image used */
      background-image: url("https://blog.prezi.com/wp-content/uploads/2019/03/patrick-tomasso-208114-unsplash-1024x768.jpg");
      /* Add the blur effect */
      /* Full height */
      height: 100vh;
      /* Center and scale the image nicely */
      background-position: center;
      background-repeat: no-repeat;
      background-size: cover;
    
    
    .profilePicture 
      backdrop-filter: blur(8px);
      height: 100vh;
      width: 100vw;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      position: absolute;
      left: 50%;
      color: white;
      top:50%;
      margin: 0 auto;
      transform: translate(-50%, -50%);
    
<div class="bg-image">

<div class="bg-text">
    <h1>My name is ***</h1>
    <p>And I am a website</p>
</div>
</div>

<div class="bg-test">
  <div class="bg-image2">

    <!-- This is the part where I want my stuff to not be blurred and focus -->
    <div class="profilePicture">
      <img src="https://images.pexels.com/photos/1253661/pexels-photo-1253661.jpeg?cs=srgb&dl=android-wallpaper-bluhen-blume-1253661.jpg&fm=jpg" style="width: 170px; height: 170px; border-radius:50%;">
      <h1>This is a title</h1>
      <p>This is just a paragraph</p>
    </div>
  </div>
  
  
</div>

我知道你已经很久没有问过了,而且你得到了答案。 希望这对其他人有帮助:)

我从cryptomothy修改了代码

【讨论】:

以上是关于在模糊背景 div 中取消模糊内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在内容中插入模糊背景图像而不干扰内容中的文本?

boostrap 怎么可以让div背景模糊 字不模糊

<div> 使用 css 模糊部分背景图像

CSS 背景图片虚化

如何在 SwiftUI 中将模糊效果作为背景?

如何在卡片中正确拟合带有模糊的背景图像?