typescript 覆盖材质UI CSS样式:角

fykwrbwg  于 2023-08-07  发布在  TypeScript
关注(0)|答案(3)|浏览(139)

我正在使用Mat-grid-tile标签,我意识到它使用了一个css类。
我面临的问题是,当我使用mat-grid-tile标签时,它里面的内容显示在中心,而不是以自上而下的方式显示。
当我从浏览器开发工具中禁用align-items: center;属性时,或者当我在下面的css中将其更改为align-items: flex-start时,它可以完美地工作(从上到下)。
我的问题是,我如何覆盖这个特定的属性?我搜索了一下,发现使用内联css是行不通的,ng::deep也不是一个好的做法。请帮助我在undertanding我如何可以覆盖它,使数据显示在顶部底部的方式。如果有其他解决办法,请告诉我。
显然chat-gpt并不关心这一点。

.mat-grid-tile-content {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 0;
    margin: 0;
}

字符串
我是个新手,请对我好一点。

apeeds0o

apeeds0o1#

您可以使用封装:ViewEncapsulation.None在组件的typescript文件中以最高优先级应用css。
示例:-
HTML代码
x1c 0d1x的数据
CSS格式



typescript



示例(演示)



在这里,我更新了内容的颜色,而没有使用ng-deep。这是Angular自己提出的正确解决方案。

eufgjt7s

eufgjt7s2#

不幸的是,由于封装的原因,更改Angular Material CSS并不简单。您可以参考以下链接了解更多信息:https://material.angular.io/guide/customizing-component-styles的数据。
没有推荐的方法来修改Angular Material样式,因为它们的设计不容易更改。但是,如果您仍然想继续,有三种可能的方法:
1.禁用封装:禁用封装会影响组件中的所有CSS样式,包括模板中其他组件的子元素。你可以在这里了解更多:https://angular.io/guide/view-encapsulation
1.覆盖Angular项目根目录下style.css文件中的.mat-grid-tile-content类。任何CSS样式都将应用于项目中的任何HTML模板。如果更改未生效,请尝试使用!在属性的末尾添加important关键字。
1.用途::ng-deep(deprecated):虽然::ng-deep已被弃用,但一些开发人员仍然喜欢它,因为没有完美的替代品。但是要谨慎,因为弃用可能会导致未来的问题。
总之,不建议修改“Angular 材质”样式,但如果选择这样做,请考虑每种方法的潜在后果。

nfs0ujit

nfs0ujit3#

对于mat-grid-tile,您可以使用两个额外的选择器

  • 第一个月
  • <mat-grid-tile-footer></mat-grid-title-footer>

通过以这种方式结构化数据,您可以将内容移动到mat-grid-tile-header内部并实现结果,而不会影响其他实现。我用了三种风格,这应该解决你的问题。
1.独立样式表方法
超文本标记语言:

<mat-grid-list cols="4" rowHeight="100px">
  <mat-grid-tile
    *ngFor="let tile of tiles"
    [colspan]="tile.cols"
    [rowspan]="tile.rows"
    [style.background]="tile.color"
  >
    <mat-grid-tile-header> {{tile.text}} </mat-grid-tile-header>
  </mat-grid-tile>
</mat-grid-list>

字符串
本地样式表文件内容:

.mat-grid-tile .mat-grid-tile-header {
  align-items: flex-start;
  justify-content: center;
  background: transparent;
}


1.单式装订

<mat-grid-tile-header
  [style.align-items]="'flex-start'"
  [style.justify-content]="'center'"
  [style.background]="'transparent'"
>
  {{tile.text}}
</mat-grid-tile-header>


1.属性指令-NgStyle。请记住导入Common Module

<mat-grid-tile-header
          [ngStyle]="{'align-items': 'flex-start', 'justify-content': 'center', 'background': 'transparent'}"
        >{{tile.text}}
    </mat-grid-tile-header>

相关问题