Angular Material - Mat-Dialog - 改变背景模糊/变暗效果

Posted

技术标签:

【中文标题】Angular Material - Mat-Dialog - 改变背景模糊/变暗效果【英文标题】:Angular Material - Mat-Dialog - change background blur / darkening effect 【发布时间】:2019-08-02 06:55:37 【问题描述】:

你好,我心爱的社区,

将角度与角度材料结合使用。

使用默认配置打开材质对话框时,它会使背景变暗一点。现在我希望它是一个模糊的背景。我尝试使用 css 样式,但无法更改窗口的背景(无法在组件模板内获得正确的选择器)。

我浏览了文档,但那里什么也没有。我可以在样式上多玩一点,因为我确信可能有一些棘手的方法,但考虑到变暗效果已经开箱即用,我认为应该也应该有一个开箱即用的主题功能。你怎么看?

【问题讨论】:

【参考方案1】:

我猜你错过了文档中的属性MatDialogConfig - backdropClass

查看StackBlitz DEMO 获取简单示例

来自这个演示:

dialog-overview-example.ts:

openDialog(): void 
  const dialogRef = this.dialog.open(DialogOverviewExampleDialog, 
    width: '250px',
    data: name: this.name, animal: this.animal,
    backdropClass: 'backdropBackground' // This is the "wanted" line
  );

  dialogRef.afterClosed().subscribe(result => 
    console.log('The dialog was closed');
    this.animal = result;
  );

styles.css:

.backdropBackground 
  /* your css needs */

【讨论】:

谢谢@benschabatnoam,这正是我想要的。我不知道我怎么会在文档中错过它,它就在顶部。 我们可以使用这个类来使用不透明度制作背景模糊 @Darshantheerth 当然可以,我已经更新了 stackblitz 示例,向您展示如何使用正确的 css【参考方案2】:

@benshabatnoam 给出的答案是绝对正确的,但文档还有另一个选项可以完全禁用背景。

hasBackdrop

这是一个例子:

https://stackblitz.com/edit/angular-ei9hdv

【讨论】:

【参考方案3】:

您可以通过结合不透明度和模糊来获得不错的效果。这样做:

backdropClass 添加到您的对话框选项中:

backdropClass: "bdrop"

这些规则到你的样式表中:

.bdrop 
    background-color: #bbbbbbf2;
    backdrop-filter: blur(4px);

演示:https://angular-blurred-dialog-backdrop-zdyvpc.stackblitz.io/

【讨论】:

【参考方案4】:

您也可以在 styles.scss 中覆盖类 .mat-dialog-container

.mat-dialog-container 
  box-shadow: 0px 11px 15px -7px rgb(0 0 0 / 20%), 0px 24px 38px 3px rgb(0 0 0 / 14%), 0px 9px 46px 8px rgb(0 0 0 / 12%);
  background: #fff;
  color: black;

【讨论】:

以上是关于Angular Material - Mat-Dialog - 改变背景模糊/变暗效果的主要内容,如果未能解决你的问题,请参考以下文章

AngularCLI 和 Angular Material(原理图)错误:无法解析集合“@angular/material”

无法导入“@angular/material”模块

Angular2 Material:Angular 材质输入的自定义验证

Angular Material 设计

如何有效地使用 Angular Material 自定义调色板颜色 Angular Material

Angular 2 Material - 如何居中进度微调器