当前位置: 首页 > 知识库问答 >
问题:

在行点击时为垫子表添加角材料波纹效果

韦宣
2023-03-14

我使用的是角材料V6。只要单击mat-table中的一行,我就想添加一个涟漪效果。

HTML:

<table mat-table [dataSource]="this.projectsList" class="mat-elevation-z8">

  <ng-container matColumnDef="id">
    <th mat-header-cell *matHeaderCellDef>ID</th>
    <td mat-cell *matCellDef="let project">{{project.id}}</td>
  </ng-container>

  <ng-container matColumnDef="title">
    <th mat-header-cell *matHeaderCellDef>Title</th>
    <td mat-cell *matCellDef="let project">{{project.title}}</td>
  </ng-container>

  <tr mat-header-row *matHeaderRowDef="this.displayColumns"></tr>
  <tr mat-row *matRowDef="let row; columns: this.displayColumns"></tr>

</table>

SCSS:

table {
  width: 90vw;
  margin-top: 1%;
  margin-left: auto;
  margin-right: auto;
}

.mat-row:hover {
  background: rgba(0, 0, 0, 0.04);
}

模块导入:

AppRoutingModule,
BrowserModule,
BrowserAnimationsModule,
MatToolbarModule,
MatSidenavModule,
MatButtonModule,
MatCheckboxModule

自定义主题:

@import '~@angular/material/theming';
@import './palette.scss';
// Plus imports for other components in your app.

// Include the common styles for Angular Material. We include this here so that you only
// have to load a single css file for Angular Material in your app.
// **Be sure that you only ever include this mixin once!**
@include mat-core();

// Define the default theme (same as the example above).
$light-primary-blue:    mat-palette($primary-blue);
$light-accent-purple:   mat-palette($accent-purple);
$light-theme:           mat-light-theme($light-primary-blue, $light-accent-purple);

// Include the default theme styles.
@include angular-material-theme($light-theme);

// Define an alternate dark theme.
$dark-primary: mat-palette($primary-blue);
$dark-accent:  mat-palette($accent-purple);
$dark-theme:   mat-dark-theme($dark-primary, $dark-accent);

// Include the alternative theme styles inside of a block with a CSS class. You can make this
// CSS class whatever you want. In this example, any component inside of an element with
// `.dark` will be affected by this alternate dark theme instead of the default theme.
.dark {
  @include angular-material-theme($dark-theme);
}

我找不到任何关于向表中添加涟漪效果的文档,但我看到过几个Stackblitz实例,它们对行单击具有涟漪效果。我试图照搬他们正在做的事情,但没有成功。

共有1个答案

姜乐家
2023-03-14

如下所示修改您的td元素。

<table mat-table [dataSource]="this.projectsList" class="mat-elevation-z8">

  <ng-container matColumnDef="title">
    <th mat-header-cell *matHeaderCellDef>Title</th>
    <td mat-cell *matCellDef="let project">
      <div class='mat-ripple-wrapper' matRipple>
        {{project.title}}
      </div> 
    </td>
  </ng-container>

</table>

风格

.mat-ripple-wrapper{
   position: relative;
}

mat-ripple指令在单击触发器元素后创建一个div。如果触发器元素放在行上,它就会掉在不合适的地方。最好的方法是将td数据包装在div中,并在该div上添加指令以包含动态生成的div。

 类似资料:
  • 我有一个简单的4个按钮,有棱角的材质,导入的BrowserAnimationsModule等: 只有第一个按钮有可见的涟漪效果。我试图添加class="mat-app-background"到主体或包装,但仍然没有效果。是这个版本的某种bug吗? 纯简单的项目,只有角度材料依赖:stackblitz演示

  • 我有一个mat网格列表,它具有用户定义行数和列数。我需要显示每个mat-grid-title单元格的所有边框。 但是,如何正确显示mat-grid-list的最外面的黑色边框呢? 这是我的stackblitz https://stackblitz.com/edit/Angular-7GJJJN 谢谢你

  • 我正在使用角材料,我有问题显示两种类型的按钮:垫触控按钮和垫平按钮。 除这两个按钮外,其他按钮都在工作。我已经导入了所需的所有模块。 我怎么才能让他们工作呢?

  • 我正在使用angular 8.0.0,angular material和Fuse主题作为管理面板。问题是,每当我更改mat-select的样式时,它就会被应用,但在一两次刷新后,角度材质会覆盖本地组件更改并应用默认的。 它也会应用到所有组件,我如何才能只更改一个mat-select的样式? 我的html中有问题的部分: scss文件: } 尝试了stackoverflow的所有建议,但似乎无法改变

  • 我在使用角材料时遇到了一些问题,我尝试了很多解决方案,但都不起作用。这就是我想做的: 我正在使用带有反应形式的角材料制作一个表单,在我添加组件之前,一切都很好。这是我得到的 错误:mat form字段必须包含MatFormFieldControl。 这是我的代码: HTML: 组件: 模块: 我导入了模块以便Angular Material可以正常工作,实现了表单控件名称,但仍然得到了相同的。我尝