【问题标题】:How to overlap component?如何重叠组件?
【发布时间】:2018-04-03 19:15:27
【问题描述】:

我有以下角度组件,我们称之为 child-component

<div>
       <a-component-tag></a-component-tag>
       <router-outlet></router-outlet> 
</div>

它本身正在被渲染到另一个这样的路由器插座中

<div>
<top-component></top-component>
<router-outlet></router-outlet>
<div>

我希望在上面的第一个路由器插座中呈现的组件在 a-component-tag 下方呈现或覆盖 a-component-tag,具体取决于在用户单击最大化、最小化按钮时。它不应该覆盖除 a-component-tag 之外的任何东西(即它不应该覆盖 top-component)。

这个组件是由

定义的
<div id="thiscomp" [ngclass]="max?cover:minimize">...</div>

我试图将这两个类定义为

.cover{
  position: absolute;
  top: 0;
  left: 0;
  z-index:100;
}

.minimize {
   margin-top:30px;
}

但是封面类不起作用:thiscomp div 中的一些子组件呈现在一些保持最小化的上方。

【问题讨论】:

  • 嗨,我删除了javascript 标签,因为这个问题中没有任何标签。更准确地说(供将来参考),它与问题没有关键相关。此外,无论如何,Angular 都是用 TypeScript 编写的。当然,仍然有人提出 JavaScript 答案
  • 按照下面@Daniel Beck 的建议,如果要隐藏父组件并显示子组件,请查看stackoverflow.com/questions/35738355/…

标签: css angular


【解决方案1】:

您正在尝试更改两个 DOM 元素出现的顺序 - 有比绝对定位更好的技术可用于此。

本例中的javascript仅用于演示;这项工作正在 CSS 中完成:

document.getElementById("example").onclick = function() {
  document.getElementById("container").classList.toggle('flip');
}
#container {display: flex; flex-direction:column}

#container.flip {flex-direction: column-reverse}
<div id="container">
  <div class="componentA">Component A</div>
  <div class="componentB">Component B</div>
</div>

<button id="example">Toggle</button>

【讨论】:

  • 我希望组件 B 覆盖组件 A 而不是翻转它们。或者我误解了你的回答。
  • 也许我误解了——我把“下面”理解为“在页面上”而不是“按堆叠顺序”。我并没有完全按照你对你想要的东西的描述——如果你试图将一个组件隐藏在另一个组件后面,最好只使用 v-如果背景不存在?
  • ...呃,如果。忘记我们说的是哪个框架了:)
  • 我其实很喜欢这个解决方案。我尝试了这个解决方案和顶部组件上的 ngIf,现在更喜欢如上所述翻转它们。
猜你喜欢
  • 2019-09-08
  • 2021-02-20
  • 2019-01-26
  • 2010-11-28
  • 1970-01-01
  • 2016-04-17
  • 2023-04-04
  • 1970-01-01
  • 2016-11-11
相关资源
最近更新 更多