【问题标题】:Z-Index NOT working on Angular's Material DialogZ-Index 不适用于 Angular 的材质对话框
【发布时间】:2018-10-18 10:20:01
【问题描述】:

错误:

Z-Index 不适用于材质对话框

预期的行为是什么?

Z-Index 应该在 Material Dialog 上工作,或者 Dialog 应该在其他所有内容之上。

目前的行为是什么?

材料对话框被下面的选择选项覆盖。

重现的步骤是什么? https://stackblitz.com/edit/angular-gsa8kr-rkss7t?file=app/dialog-overview-example.html

  1. 输入文字。
  2. 选择下拉菜单。

截图:https://postimg.cc/gallery/2i3tc2sbc/

还有什么我们应该知道的吗?

尝试过的 CSS 修复:

.modal__content,dialog-layout,mat-dialog-container,.mat-dialog-container,#cdk-overlay-0,.cdk-overlay-pane {
    z-index: 9999 !important;
}

这些都没有用。

【问题讨论】:

    标签: css angular angular-material


    【解决方案1】:

    持有 matdialog 覆盖的类是 cdk-overlay-container

    将此代码添加到您的 style.css

    .cdk-overlay-container {
        z-index: 9999 !important;
    }
    

    这应该可以解决问题。

    【讨论】:

    • 当我添加 ::ng-deep 时它解决了我的问题,这是为什么呢?
    【解决方案2】:

    <select> 元素是 HTML 中的交互式内容元素。它的行为类似于右键单击上下文菜单,并呈现在所有文档元素之上。

    在您的情况下,当您在字段中输入您的姓名后单击选择时,会依次发生以下事情:

    1. 调用文本框上的模糊事件并打开对话框。
    2. 选择菜单打开。

    因此,按照顺序,发生的事情是正确的,即先打开对话框然后选择,因此选择在对话框上方,这是正确的。

    当然,发生这种情况时界面看起来并不好,因此有一个解决方法,即在对话框打开时隐藏选择,然后在假设 0.1 秒后再次显示。作为选择的隐藏,其菜单将与之隐藏。

    我已经为你实现了。请看一下这个 Stackblitz:Select closing on dialog open

    希望对你有帮助。

    【讨论】:

    • 非常好。非常感谢您的帮助!高度赞赏。
    • 不客气。如果您认为这是正确答案,请接受此答案作为最佳答案,以便其他用户阅读。
    • @NabilShahid 如果我在不同元素上需要不同的 z-index 怎么办?比如 mat-menu 在我的固定标题后面和 mat-dialog 在我的固定标题上方,但我不能这样做都使用 cdk-覆盖容器,所以我不能单独设置它的索引。
    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2013-02-11
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多