suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Kann ein untergeordnetes Div übergeordnete Stile überschreiben und als Portal fungieren?

Ich möchte ein übergeordnetes Div erstellen, das untergeordnete Divs enthält. Der übergeordnete Stil ist

width: 100vw;
  height: 100vh;
  position: fixed;
  background-color: rgb(0 0 0 / 0.25);
  backdrop-filter: blur(2px);
  z-index: 8888;
  top: 0;
  left: 0;

Der Unterstil ist

background-color: transparent;
  width: 200px;
  height: 200px;
  position: absolute;
  left: 400px;
  top: 400px;

Gibt es eine Möglichkeit, dafür zu sorgen, dass sich ein untergeordnetes Element wie ein Portal verhält, wobei der Bereich, in dem es sich befindet, unscharf wird und die Hintergrundfarbe des übergeordneten Elements entfernt wird?

tl;Dr. Etwas, das so aussieht

P粉821231319P粉821231319274 Tage vor328

Antworte allen(1)Ich werde antworten

  • P粉043432210

    P粉0434322102024-03-21 00:20:30

    --编辑--

    如果问题是如何恢复子 div 中的背景过滤器,您可以使用

    backdrop-filter: none;

    但是,如果您想从父级的父级继承此属性,则需要在 JavaScript 中执行此操作

    element.style.backdropFilter = element.parentNode.parentNode.style.backdropFilter;

    在 CSS 中执行此操作的三种方法

    1 使用相对 div 位置

    div : {
      width: 100vw;
      height: 100vh;
      position: fixed;
      background-color: rgb(0 0 0 / 0.25);
      backdrop-filter: blur(2px);
      background-clip: text;
      z-index: 8888;
      top: 0;
      left: 0;
    }
    
    div div {
      background-color: transparent;
      width: 200px;
      height: 200px;
      position: absolute;
      left: 400px;
      top: 400px;
    }

    2个使用ID

    #mainID : {
      width: 100vw;
      height: 100vh;
      position: fixed;
      background-color: rgb(0 0 0 / 0.25);
      backdrop-filter: blur(2px);
      background-clip: text;
      z-index: 8888;
      top: 0;
      left: 0;
    }
    
    #subDivID {
      background-color: transparent;
      width: 200px;
      height: 200px;
      position: absolute;
      left: 400px;
      top: 400px;
    }

    3 使用类

    .mainID : {
      width: 100vw;
      height: 100vh;
      position: fixed;
      background-color: rgb(0 0 0 / 0.25);
      backdrop-filter: blur(2px);
      background-clip: text;
      z-index: 8888;
      top: 0;
      left: 0;
    }
    
    .subDivClass {
      background-color: transparent;
      width: 200px;
      height: 200px;
      position: absolute;
      left: 400px;
      top: 400px;
    }

    Antwort
    0
  • StornierenAntwort