提问者:小点点

如何将图像的一部分覆盖在视频上?


我是一个初学者学习代码,我正在尝试克隆一个Netflix登录页面。

有一个部分,我必须在电脑图像内播放视频。 我试着把视频放进了电脑。 但是当我甚至尝试使用Z-索引使图像的某些部分覆盖在视频上时,它并没有像预期的结果那样工作。 如果我遗漏了什么,请告诉我。

图片链接:https://assets.nflxext.com/ffe/siteui/acquition/ourstory/fuji/desktop/device-pile-in.png

视频链接:https://assets.nflxext.com/ffe/siteui/acquition/ourstory/fuji/desktop/video-devices-in.m4v

应为:https://i.imgur.com/egv9qyz.mp4

我的输出是:https://i.imgur.com/oujuxrb.gifv

HTML

 <div class="section-tv-container">
      <section class="section-tv">
        <div class="tv-feature-text">
          <h1>Watch everwhere.</h1>
          <h2>
            Stream unlimited movies and TV shows on your phone, tablet, laptop,
            and TV.
          </h2>
        </div>
        <div class="tv-container2">
          <div id="tv_container">
            <video
              class="tv-video2"
              autoplay=""
              playsinline=""
              muted=""
              loop=""
              width="300"
              height="240"
            >
              <source
                src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/video-devices-in.m4v"
                type="video/mp4"
              />
            </video>
          </div>
        </div>
      </section>

CSS:

.section-tv-container {
  border-top: 8px solid #222;
  height: 48.2rem;
  background: #000;
  border-bottom: 8px solid #222;
  display: flex;
  justify-content: center;
  align-items: center;
  color: #fff;
}


.section-tv {
  height: 32.5rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 80%;
  margin: auto;
}

.tv-feature-text h1 {
  font-size: 5rem;
  width: 41.4rem;
}

.tv-feature-text h2 {
  margin-top: 20px;
  font-size: 2.6rem;
  width: 51.2rem;
  font-weight: 400;
}


.tv-container2 {
  position: relative;
}

#tv_container {
  background: url("https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/device-pile-in.png");
  width: 400px; /* Adjust TV image width */
  height: 35.8rem; /* Adjust TV image height */
  position: relative;
  background-position: center;
  background-size: cover;
  display: flex;
  justify-content: center;
  /* z-index: 100; */
  object-fit: contain;
  margin-right: 30px;
}

.tv-video2 {
  display: inline-block;
  vertical-align: baseline;
  position: absolute;
  right: 90px;
  bottom: 120px;
  z-index: 3;
}

共2个答案

匿名用户

下面是你怎么做的,

注意:这段代码仅用于解释(您不能只是复制/粘贴,并期望得到它的位置上的一切)理解代码,然后尝试重新实现它。

如果被困住了,不要犹豫地问,祝你好运

null

#tv_container {
  width: 600px;
  height: 450px;
  position: relative;
}

.monitor {
  width: 100%;
  height: 100%;
  background-image: url("https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/device-pile-in.png");
  background-position: center;
  background-size: cover;
}

.tv-video2 {
  position: absolute;
  top: 5px;
  left: 109px;
  width: 378px;
  height: 291px;
  z-index: -1;
}
<div id="tv_container">
      <div class="monitor"></div>
      <video
        class="tv-video2"
        autoplay=""
        playsinline=""
        muted=""
        loop=""
        width="300"
        height="240"
      >
        <source
          src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/video-devices-in.m4v"
          type="video/mp4"
        />
      </video>
    </div>

匿名用户

你的问题是视频是电视图像的子元素。 所以,如果你改变电视图像的Z索引,你也改变了视频本身的Z索引。 你需要做的是把视频放在一个独立的div中,把它放在你想要的位置上,然后设置z索引。 重要的是图像背景不是视频的父元素。 像这样的东西:

   <div class="tv-container2">
      <div id="tv_container">
      </div>
      <div class="tv-video2">
        <video
          autoplay=""
          playsinline=""
          muted=""
          loop=""
          width="300"
          height="240"
        >
          <source
            src="https://assets.nflxext.com/ffe/siteui/acquisition/ourStory/fuji/desktop/video-devices-in.m4v"
            type="video/mp4"
          />
        </video>
      </div>
    </div>

然后将tv_container的Z索引设置为高于tv-video2的Z索引