css 如何删除垫卡标题和离子网格之间不需要的空白

hwamh0ep  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在做一个离子Angular 的应用程序。
在我目前正在处理的页面上,我有一个有角的材质<mat-card>,其中(红色边框),两个<mat-card-title>标记分别位于<ion-col>内(蓝色边框),格式为<ion-grid>(粉色边框)。为了组织卡片的整体格式,我首先尝试删除默认情况下存在的所有填充。为了消除这种填充,我在CSS中有一个no-space类,它具有以下属性。

.no-space {
  padding: 0px !important;
  margin: 0px !important;
}

这个类被应用到以下标签<mat-card> <mat-card-header> <ion-grid>。在<ion-grid><mat-card-header>之间仍然有空间。什么可能导致空间仍然存在?下面我将包括一个截图,显示这个空间与HTML和SCSS文件
HTML档案

<mat-card class="no-space">
  <mat-card-header class="red-border no-space">
    <ion-grid class="pink-border no-space">
      <ion-row>
        <ion-col class="blue-border">
          <!-- formatted to left showing starting date -->
          <mat-card-title>Example Date</mat-card-title>
        </ion-col>
        <ion-col class="blue-border"></ion-col>
        <ion-col class="blue-border">
          <!-- formatted to right side shows money spent / total -->
          <mat-card-title>$$$/$$$</mat-card-title>
        </ion-col>
      </ion-row>
    </ion-grid>
  </mat-card-header>
  <!-- a progress bar displaying spent / total -->
  <mat-card-content class="no-space">Simple Card</mat-card-content>
  <mat-card-actions class="no-space">
    <ion-button fill="solid" color="tertiary">Expand Card</ion-button>
  </mat-card-actions>
</mat-card>

SCSS文件

.red-border {
  border-color: red;
  border-width: 3px;
  border-style: solid;
}

.pink-border {
  border-color: pink;
  border-width: 5px;
  border-style: solid;
}

.blue-border {
  border-color: blue;
  border-width: 3px;
  border-style: solid;
}

.no-space {
  padding: 0px !important;
  margin: 0px !important;
}

编辑:我已经尝试了这个解决方案,但它没有删除空格How to remove space (margin/padding) of ion-row and ion-col in ionic?见我的评论如下。

0mkxixxg

0mkxixxg1#

感谢E. Maggini的评论,我找到了导致额外空间的原因。当编译时,一个额外的<div>和类“mat-card-header-text”被添加到我的代码中。见下图。

我找到的解决这个问题的最好的方法是在.mat-card-header-text类中添加样式,以将边距减少到0 See solution here。为了正确应用样式,在类之前包含::ng-deep组合符。::ng-deep的使用已经被弃用,但是存在dosen't seem to be a good replacement,所以由于这是一个副项目,我仍然使用它。我发现one recomendation在::ng-deep之前加上:host,以防止使用::ng-deep时出现不必要的行为。下面是我在解决方案中使用的最后一段代码。

:host ::ng-deep .mat-card-header-text {
  margin: 0px !important;
}

相关问题