如何制作背景叠加?

How to make background overlay?

我感兴趣的是如何像在这个布局中一样在具有透明部分的特定颜色图层的背景上进行叠加。也许有人知道实现这个的好方法,所以我会请你帮忙做一个类似的背景重叠。

我所说的是在站点的 header 中。 布局link:https://www.figma.com/file/VCBhj0WljD20IzHilnjMSJ/PrivateJetBooking?node-id=0%3A1

我会说明,彩色滤镜加在背景上,但是某些区域没有这个滤镜,如何制作?

如何使用 display:grid 它帮助我在背景上重叠透明图像。

你可以用box-shadow作为overlay white来实现,元素会变成这样的舷窗:

.background {
  width: 100%;
  height: 300px;
  background-position: center;
  background-size: cover;
  position: relative;
  overflow: hidden;
}

.hole {
  width: 120px;
  height: 200px;
  position: absolute;
  top: 50px;
  right: 100px;
  border: 10px solid white;
  border-radius: 80px;
  box-shadow: 0px 0px 0px 99999px rgb(255 255 255 / 80%);
}
<section class="background" style="background-image: url('https://images.pexels.com/photos/62623/wing-plane-flying-airplane-62623.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260')">
  <div class="hole"></div>
</section>

我想出了一个解决方案。 它不是很优雅,但它有效。

body, html {
  padding: 0;
  margin: 0;
}
:root {
  --window-width: 100px;
  --right: calc(var(--window-width) + 80px);
  --window-height: 160px;
  --section-height: 300px;
  --section-width: 100vw;
}
.container {
  width: var(--section-width);
  height: var(--section-height);
  position: relative;
}
.bg, .inner-bg {
  background-image: url("https://images.unsplash.com/photo-1436491865332-7a61a109cc05?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1174&q=80");
  background-size: cover;
  background-position: center;
  width: var(--section-width);
  height: var(--section-height);
}
.inner-bg {
  position: absolute;
  transform: translate(calc(-1 * calc(var(--section-width) - var(--right))),calc(calc(var(--window-height) / 2) - calc(var(--section-height) / 2)));
  top: 0;
  left: 0;
}
.inner-overlay {
  /*background-color: rgba(0, 0, 255, 0.1);*/
  /*blue tint in window*/
  width: 100%;
  height: 100%;
}
.bg {
  
}
.overlay {
  background-color: rgba(255, 255, 255, 0.7);
  width: 100%;
  height: 100%;
}
.window {
  outline: 5px solid white;
  border-radius: 40px;
  width: var(--window-width);
  height: var(--window-height);
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  left: calc(var(--section-width) - var(--right));
  overflow: hidden;
}
<div class="container">
  <div class="bg">
    <div class="overlay">
    </div>
  </div>
  <div class="window">
    <div class="inner-bg">
      <div class="inner-overlay">
      </div>
    </div>
  </div>
</div>

简单的方法。您可以尝试使用以下代码。

<style>

  .main-div {
  width: 100%;
  height: 350px;
  position: relative;
  background-image: url("https://images.unsplash.com/photo-1436491865332-7a61a109cc05");
  background-position: center;
  background-size: cover;
}

.inner-div {
  width: 130px;
  height: 200px;
  position: absolute;
  top: 70px;
  right:100px;
  border: 10px solid white;
  border-radius: 80px;
  box-shadow: 0px 0px 0px 99999px rgb(255 255 255 / 75%);

}
</style>

<div class="main-div">
    <div class="inner-div"></div>
</div>