首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mat-在特定div上的对话框

Mat-在特定div上的对话框
EN

Stack Overflow用户
提问于 2019-10-22 17:52:18
回答 3查看 3.3K关注 0票数 3

我正在使用angular 8和mat-dialog。现在,mat-dialog覆盖了整个页面,mat-dialog位于页面的中心,如下所示。

但是我希望mat-对话框只出现在div上,覆盖图也应该只出现在父div上,即mat-dialog应该是相对于父div的,如下图所示。该怎么做呢?此外,这是一个响应式的网页,因此,添加垫对话框和覆盖的位置是大量的工作,可能不会在不同的屏幕大小看起来很好。如果不能使用角度材料,请建议一些其他框架(bootstrap等)或其他方法。

EN

回答 3

Stack Overflow用户

发布于 2019-10-22 18:01:10

您可以使用与MatDialogRef关联的updatePosition函数

代码语言:javascript
复制
this.dialogRef.updatePosition({ top: '25px', left: '25px', right:'25px', bottom:'25px' });

这将定位对话框。

票数 0
EN

Stack Overflow用户

发布于 2019-10-22 18:05:03

您可以在主机div中创建一个position: absolute

模板:

代码语言:javascript
复制
<div class="main">
  <button (click)="toggleDialog()"> toggle dialog </button>
  <div *ngIf="isOpen" class="dialog"> 
    <span>Window dialog</span>
  </div>
</div>

CSS:

代码语言:javascript
复制
.main {
  position: relative;
  height: 100vh;
}

.dialog {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);

  width: 300px;
  height: 200px;
  background-color: grey;

  display: flex;
  flex-direction: column;
  align-items: center;
}

TS:

代码语言:javascript
复制
import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  isOpen = false;

  toggleDialog() {
    this.isOpen = !this.isOpen;
  }
}

在这里试试:https://stackblitz.com/edit/angular-evpbay

票数 0
EN

Stack Overflow用户

发布于 2019-10-22 18:11:47

请删除对话框覆盖。

代码语言:javascript
复制
.cdk-overlay-backdrop{display: none;}

在弹出窗口打开时创建您自己的覆盖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58501583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档