我正在试着给背景中播放的视频添加一个覆盖.然而,由于某种原因,覆盖似乎没有显示出来.我做错了什么?下面是以下代码:是的,我确实理解我在每个组件中都有背景 colored颜色 元素,这是我试图让覆盖显示出来的.

import React from 'react'; 
import styled from 'styled-components'; 
import VideoBg from '../assets/landing-page-video-1.webm';

const Home = () => {
  return ( 
    <VideoContainer> 
        < Overlay className="overlay">  
         <video className="BgVideo"src={VideoBg} autoPlay loop muted />  
         </Overlay> 
     
    </VideoContainer> 
    
  )
}

const Overlay = styled.div `
 & .overlay{
    z-index: 1; 
    position: absolute; 
    width: 100%;
    height: 100%; 
    top: 0;  
    left: 0;  
    background-color: rgba(0,0,0,.1) !important;

    
 }
`

const VideoContainer = styled.div ` 
& .BgVideo{  
    z-index: 1;
    bottom:0; 
    top:0; 
    right:0; 
    left:0; 
    width: 100Vw; 
    height: 100vh; 
    object-fit: cover; 
    object-position: center; 
    margin-top: 0;  
    position:fixed;     
    background-color: rgba(0,0,0,.1) !important;

};  
bottom:0; 
left:0; 
margin: 0; 
padding: 0; 
font-family: Impact; 
min-width: 100%; 
min-height: 100vh; 
right:0; 
top:0; 
z-index: -1; 
background-color: rgba(0,0,0,.1) !important;`
`

我只是试着在视频上加一个黑色的覆盖层,因为我计划在视频上加文字

推荐答案

首先,你的& .overlay没有 Select 任何东西.应该改为&.overlay,go 掉中间的空格.

接下来,使用当前的<Overlay> <video> </Overlay> struct ,即使您在覆盖上设置z-index:100或在视频上设置z-index:-100,也无法使视频显示在semi transparent父div(overlay)之下.你可以找到与stacking context有关的SO Postsarticles.

在不更改JSX struct 的情况下,您可以添加一个伪元素,如下所示:(我将不透明度设置为.5而不是.1,以使示例更清晰.)

const Home = () => {
  return ( 
    <VideoContainer> 
        <Overlay className="overlay">  
            <video className="BgVideo"src={VideoBg} autoPlay loop muted />  
         </Overlay> 
    </VideoContainer> 
  )
}

const Overlay = styled.div`
 &::after{
    content: ""; 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    top: 0; 
    left: 0; 
    background-color: rgba(0,0,0,.5) !important;
 }
`

const VideoContainer = styled.div` 
& .BgVideo{  
    bottom:0; 
    top:0; 
    right:0; 
    left:0; 
    width: 100Vw; 
    height: 100vh; 
    object-fit: cover; 
    object-position: center; 
    margin-top: 0;  
    position:fixed;     
};  

bottom:0; 
left:0; 
right:0; 
top:0; 
margin: 0; 
padding: 0; 
font-family: Impact; 
min-width: 100%; 
min-height: 100vh; 
`

Css相关问答推荐

CSS立方体覆盖

如何在CSS中使用nextJs来指定基色?

Vue3日期 Select 器:作用域样式不起作用

如何在JavaFX中设置分隔符的样式?

CSS子网格不显示行间距

输入中的框始终显示在MUI文本字段中

位置:固定元素只是不固定

如果 css 仅位于 razor 页面中的一页上,我是否仍应在 wwwroot 中写入或仅将其放在页面上?

是否可以在元素之间对齐渐变?

如何解决 Spotify 嵌入代码中的白色背景错误?

如何在不使用 sx props 的情况下从 Select 样式中定位 mui paper 组件?

CSS 布局:使一列依赖于另一列

没有字母间距的CSS悬停边框

为什么每次加载新页面时我的 React 侧边栏都会抖动?

卡在 CSS 中的grid-template-columns中

使用之前和之后为锚标签添加画笔描边效果

将复选框对齐到中心

加载资源失败:服务器响应状态为 404(未找到)

CSS垂直对齐不适用于浮动

为什么只为第一个元素显示双引号?