【问题标题】:Showing a gray backdrop with a mixin使用 mixin 显示灰色背景
【发布时间】:2018-08-02 22:36:00
【问题描述】:

我有一个小窗口要插入到我的页面中(并在页面关闭时删除)。我想要这个窗口后面的灰色背景,就像对话框一样。所以我想我会使用paper-dialog-behavioriron-overlay-behavior 作为mixin,并在我的ready() 方法中设置this.withBackdrop = true。但是,当我将...extends Polymer.mixinBehaviors([Polymer.IronOverlayBehavior], Polymer.Element)...extends Polymer.mixinBehaviors([Polymer.PaperDialogBehaviorImpl], Polymer.Element) 添加到此元素时,它永远不会出现。

我厌倦了.open(),就像在对话中一样,被告知它是未定义的。我可以在 DevTools 中跟踪我的元素加载,控制台中没有打印错误,但它从未出现在屏幕上。

您可以在这支笔上看到我的目标:https://codepen.io/johnthad/pen/zRLMpe 如果我将 MyChild 的类声明换成带有 mixin 的类声明,则子元素会加载但从不显示。

【问题讨论】:

    标签: javascript polymer polymer-2.x


    【解决方案1】:

    您需要在追加后调用open of MyChild

    _doTap(e) {
       . . .
       this.$.placeholder.appendChild(this.mychild);
       this.mychild.open()
    }
    

    然后在MyChild组件中将withBackdrop属性添加到true

    static get properties() {
         return {
             withBackdrop: {
              type: Boolean,
              value: true
            }
         }
    }
    

    Here 你会找到工作代码。

    【讨论】:

    • 谢谢,这行得通。但奇怪的是,在我的实际应用程序中,背景覆盖了孩子,尽管背景的 z-index 为 102,而孩子的 z-index 为 103。即使我在 z-indexes 中摆弄,孩子仍然被覆盖开发工具。父母在iron-pageapp-drawer-layout 中...但我仍然不明白为什么孩子不在上面。
    • @Thad 我认为这是堆叠上下文的问题。隐藏元素的父元素可能会创建新的堆叠上下文。 Here你可以找到更多相关信息。
    • 是的,就是这样。在我的应用程序中,如果我直接删除placeholder,大小为'mychild1,然后调用document.body.appendChild(this.mychild);,它就可以工作。我还有更多的东西可以玩,但这很棒。非常感谢你的帮助。 (顺便说一句,placeholder 是关于 vaadin-grid 的其他问题,我正在解决。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2012-08-19
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多