我在我的网站上添加了一个棱角material 表.我使用了有Angular 的页面(link to the examples)上的例子. 表格行应该是可展开的,就像Angular 页面上的"表格可展开行"示例中的那些一样.但是,折叠的行在显示行的一小部分可展开部分之间仍有差距 (picture with the gaps for visualisation).

我将过滤函数和删除和添加列函数结合在一起,也是从Angular material 示例中,到我的表中.所以这可能会造成造型上的问题?

我判断了浏览器控制台,问题是表格行的填充,在bootstrap.css中设置为0.75rem.但是,如果我将行的填充设置为0,则正常的行看起来不太好.必须有某种方法来只消除丑陋的差距.

这是包含可展开行的动画部分的Angular 组件

@Component({
  selector: 'app-compare-page',
  templateUrl: './compare-page.component.html',
  styleUrls: ['./compare-page.component.css'],
  animations: [
    trigger('detailExpand', [
      state('collapsed', style({height: '0px', minHeight: '0'})),
      state('expanded', style({height: '*'})),
      transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
    ]),
  ]
})

具有类example-element-diagramComponent.htmldiv保存行的可展开部分的html元素,并且为了更好地进行概述而被省略

<table mat-table [dataSource]="tableData" multiTemplateDataRows class="mat-elevation-z8">
    <div *ngFor="let column of displayedColumns; track column">
      <ng-container [matColumnDef]="column">
        <th mat-header-cell *matHeaderCellDef> {{column}} </th>
        <td mat-cell *matCellDef="let element"> {{element[column]}} </td>
      </ng-container>
    </div>
    <ng-container matColumnDef="expand">
      <th mat-header-cell *matHeaderCellDef aria-label="row actions">&nbsp;</th>
      <td mat-cell *matCellDef="let element">
        <div *nfIf="expandedElement === element; else elseBlock "> 
        <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()">
            <mat-icon>keyboard_arrow_up</mat-icon>
          </button>
          </div>
          <ng-template #elseBlock>
            <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()"> 
            <mat-icon>keyboard_arrow_down</mat-icon>
          </button>
          </ng-template>
         
      </td>
    </ng-container>

    <ng-container matColumnDef="expandedDetail">
      <td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplayWithExpand.length">
        <div class="example-element-detail"
           [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
            <div class="example-element-diagram">


            </div>
          </div>
      </td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="columnsToDisplayWithExpand"></tr>
    <tr mat-row *matRowDef="let element; columns: columnsToDisplayWithExpand;"
      class="example-element-row"
      [class.example-expanded-row]="expandedElement === element"
      (click)="expandedElement = expandedElement === element ? undefined : element">
  </tr>
    <tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
  </table>

我try 了填充,但没有成功,我的css文件看起来仍然与在线Angular 示例中提供的文件一模一样.

推荐答案

我刚刚找到了一个解决方案.我不认为这是最好的做法.但是,我为可以通过style关键字在HTML文件中折叠的行添加了所需的"pAddding=0px". 因此,只有必要的行才会受到影响.

下面是上面的相同代码片段,并在必要的位置添加了样式

<table mat-table [dataSource]="tableData" multiTemplateDataRows class="mat-elevation-z8">
    <div *ngFor="let column of displayedColumns; track column">
      <ng-container [matColumnDef]="column">
        <th mat-header-cell *matHeaderCellDef> {{column}} </th>
        <td mat-cell *matCellDef="let element"> {{element[column]}} </td>
      </ng-container>
    </div>
    <ng-container matColumnDef="expand">
      <th mat-header-cell *matHeaderCellDef aria-label="row actions">&nbsp;</th>
      <td mat-cell *matCellDef="let element">
        <div *nfIf="expandedElement === element; else elseBlock "> 
        <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()">
            <mat-icon>keyboard_arrow_up</mat-icon>
          </button>
          </div>
          <ng-template #elseBlock>
            <button mat-icon-button aria-label="expand row" (click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()"> 
            <mat-icon>keyboard_arrow_down</mat-icon>
          </button>
          </ng-template>
         
      </td>
    </ng-container>

    <ng-container matColumnDef="expandedDetail">
      <td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplayWithExpand.length" style="padding: 0px;">
        <div class="example-element-detail"
           [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
            <div class="example-element-diagram">
             
            </div>
          </div>
      </td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="columnsToDisplayWithExpand"></tr>
    <tr mat-row *matRowDef="let element; columns: columnsToDisplayWithExpand;"
      class="example-element-row"
      [class.example-expanded-row]="expandedElement === element"
      (click)="expandedElement = expandedElement === element ? undefined : element">
  </tr>
    <tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
  </table>

Html相关问答推荐

在CSS中不保持圆形图像形状的边框半径属性

使用网格时图像溢出容器高度

每次在视口中运行动画

<;img>;和具有负边距的元素的堆叠顺序

如何修复与导航栏重叠的css网格?

HTML+CSS+JS动态选中文本高亮 colored颜色 变化

try 更新我的Node.js应用程序中的用户,但我收到错误.然而,当我使用postman 时,更新工作正常

在移动屏幕上显示时分支树视图的响应能力问题

Div 容器不会遵守边距、填充或间隙

添加带有悬停动画的喜欢图标

HTML 重定向到当前服务器

如何使用 Flutter 构建 Chrome 扩展?

为什么即使我点击其他地方,我的 contenteditable="true" 也会被激活?

Mediawiki css/html 信息框创建空白行

有没有办法让 textarea 在调整大小时不显示 CSS 转换?

如何在 Tailwind CSS 中创建响应式网格布局?

如何突出显示 .qmd html 文件中的特定代码行

标题之间和之后的 Hr 线

动态使用时波浪号不转换为绝对路径

无法使用 Reactjs 多次更新本地存储