更改叠加容器的样式

use*_*633 10 angular-material2 angular angular-cdk

我使用git项目作为虚拟键盘(https://ngx-material-keyboard.github.io/demo/).我有一些问题要让它在450*250像素的小型设备上运行.

最后,如果我使用开发工具直接在Web浏览器上修改它,我会在css中找到必要的更改.

现在我必须找到改变来源的正确位置.

将使用angular2-material的overlay组件来显示键盘.

如果我在cdk-overlay-container中注释掉该位置,它的工作原理如下:

.cdk-overlay-container {
/* position: fixed; */
z-index: 1000;
Run Code Online (Sandbox Code Playgroud)

}

但我无法从我的角度应用中覆盖这些.有什么建议?

更改截图

Fai*_*sal 20

更新的答案

从官方文档:

样式覆盖组件

基于叠加的组件具有panelClass属性(或类似属性),可用于定位覆盖窗格.

您可以通过在全局中添加css类来覆盖默认对话框容器样式styles.css.例如:

.custom-dialog-container .mat-dialog-container {
    /* add your styles */
}
Run Code Online (Sandbox Code Playgroud)

之后,您需要提供css class作为panelClass对话框的参数:

this.dialog.open(MyDialogComponent, { panelClass: 'custom-dialog-container' })
Run Code Online (Sandbox Code Playgroud)

阅读此官方文档以获取更多信息.


原始答案

::ng-deep在component.css中使用以覆盖默认样式.

::ng-deep .cdk-overlay-container {
    /* Do you changes here */
    position: fixed; 
    z-index: 1000;
}
Run Code Online (Sandbox Code Playgroud)

  • :: ng-deep不会停留在孤立的范围内,它也会影响其他视图 (3认同)
  • 值得注意的是 ::ng-deep 已被弃用 - 但我找不到有关时间范围或替代方案的说明 (2认同)
  • 如果我需要分别为 mat-menu 和 mat-dialog 设置 .cdk-overlay-container 的 z-index 怎么办?因为我的网站上有固定的标题 (2认同)
  • 对于这种情况,`::ng-deep` 的作用实际上与将 css 代码放入全局样式中相同。您最好将其放入全局样式中 - 因为它的范围不限于您的组件。事实上,情况比这更糟糕 - 假设您设置了背景:蓝色 - 并从另一个组件打开了一个对话框。不会是蓝色吧。但当你打开这个组件时,它是蓝色的——太棒了!然后返回并再次打开第一个,它仍然是蓝色的。这属于全局 styles.css 或 scss。 (2认同)