失去焦点时模糊整个网站?

问题描述 投票:0回答:2

当网页失去焦点时试图模糊网站。我尝试使用 OnBlur 和 Focusin/out

我尝试将 OnBlur 与 body 标签、html 标签一起使用。我什至尝试了听众、一堆不同的 JS 和其他东西。

我正在努力做到这一点,以便我的网站逐渐变成类似高斯的模糊,并带有一些文字,例如“come baaaackkk :(”或类似的愚蠢内容

javascript html css
2个回答
0
投票

为此,您需要使用 visibilitychange 事件。试试下面的代码:

const pageTitle = document.title;

document.addEventListener("visibilitychange", () => {
  if (document.hidden) {
    const blurredDiv = document.createElement("div");
    blurredDiv.id = "blur";
    blurredDiv.innerHTML = "<h1>Come Back :(</h1>";
    document.body.appendChild(blurredDiv);
    document.title = "Come Back :(";
  } else {
    setTimeout(() => {
      const blurredDiv = document.getElementById("blur");
      blurredDiv.parentNode.removeChild(blurredDiv);
      document.title = pageTitle;
    }, 1000);
  }
});

document.hidden
检查选项卡是否打开,但不可见。 您不需要
setTimemout
功能,但我将其添加到此处以便您可以看到它的运行情况,并且叠加层不会立即被删除。

和相应的CSS:

#blur {
  z-index: 9999;
  background: rgb(255, 255, 255, 0.2);
  backdrop-filter: blur(3px);
  
  position: fixed;
  top: 0;
  left: 0;
  
  height: 100vh;
  width: 100vw;
  /* For the h1 inside this div */
  display: grid;
  place-items: center;
}

如果你想在工作中看到这个,请仔细看看这个codepen


-1
投票

这是一个仅使用 CSS 的简单解决方案。
随意根据您的需要修改它

blurred {
  filter: blur(2px);
}

html:hover blurred {
  filter: blur(0)
}

html:hover unblurred {
  opacity: 0;
}

unblurred {
  opacity: 1;
}
<body>
  <blurred>
    This will get blurred
  </blurred>
  <unblurred>
    This will appear not blurred
  </unblurred>
</body>

© www.soinside.com 2019 - 2024. All rights reserved.