【问题标题】:How to remove md-dialog's background completely?如何完全删除 md-dialog 的背景?
【发布时间】:2020-04-28 20:52:58
【问题描述】:

我正在使用 AngularJs 与 Angular-Material 和 Jquery-ui 来创建一个浮动和可拖动的对话框窗口 - 我设法创建了我想要的 - 问题是 md-dialog 有一个容器 div (md-dialog -容器)在整个页面上伸展 - 并防止按下对话框外的任何按钮。

我想知道如何以某种方式禁用背景,以便在对话框打开时能够按下页面中的任何按钮。

我已将 md-dialog 'hasBackdrop' 选项设置为 false - 我想这还不够。

let dialogOptionsObj = {
  controller: 'DialogController',
  templateUrl: 'dialog-tpl.html',
  parent: angular.element(document.body),
  panelClass: 'myClass',
  hasBackdrop: false, // this is what cancels the gray background
  autoWrap: false,
  clickOutsideToClose: false,
  preserveScope: true,
  fullscreen: false,
};

我发现如果 md-dialog 容器被完全删除(md-dialog-container)并且 md-dialog 直接附加到 document.body 那么它正在工作 - 我正在寻找一个更好的解决方案,因为我希望它尽可能少用 Jquery。

Code

【问题讨论】:

    标签: css angularjs jquery-ui angular-material mddialog


    【解决方案1】:

    您只需设置 CSS 属性 pointer-events

    如果您希望点击“通过”元素,则使用的值为none

    所以你只需要添加以下 CSS :

    .dialog-basic-size{
       pointer-events: auto;
    }
    
    .md-dialog-container , .md-scroll-mask {
      pointer-events: none;
    }
    

    Demo

    你可以阅读更多关于指针事件here

    【讨论】:

    • 谢谢 - 我正在检查它!
    【解决方案2】:

    我认为你选择的方向不是最好的。

    我想知道如何以某种方式禁用背景,以便在对话框打开时能够按下页面中的任何按钮。

    就像:“我想要一个有四个门的钢箱,所以我决定买一辆汽车,拆掉车轮和发动机。”

    你试图打破对话的概念(Wiki)。它旨在避免所有事件传播 a.e.在对话框外单击以使用户关注特定信息,例如警报、警告等。


    ...创建一个浮动和可拖动的...

    你有足够的 Angularjs 库,可以使用 div (position: absolute) 只需 google 一下 :)

    【讨论】:

    • 你说得对——因为我没有找到任何可以满足我需要的库,所以我不得不“强制”对话框指令满足我的需求——即——重用指令和最重要的事情 - 使用动态模板......如果你打破我的要求 - 我想你会在我的方向上找到一些意义......我想用 angularjs 创建一个用于浮动对话框的组件 - 像我一样使用更少的 jquery可以.....如果您熟悉任何其他库 - 请提及 - 这将是一个非常大的帮助 - 谢谢。
    • @RoyBarOn 你的对话框的目的是什么,拖放?还是只拖?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2020-04-27
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多