尺寸 角度材料 滑动开关(小、中、大)

ine*_*now 7 css sass angular-material angular angular8

我想增加 Angular 8 项目页面上 Material Slide Toggle 的大小。我尝试将尺寸设置为大,如下所示:

<mat-slide-toggle size="large" color="primary"></mat-slide-toggle>
Run Code Online (Sandbox Code Playgroud)

然而,将尺寸从小、中、大改变没有任何改变。它保持与屏幕尺寸相同。我还尝试向组件添加样式,如下所示:

mat-slide-toggle {
  height: 100px;
  width: 100px;
}
Run Code Online (Sandbox Code Playgroud)

但这不会改变可见组件的大小,但会增加组件所在的 div 。

如何更改 Material Slide Toggle 组件的大小?

Lar*_*ryP 16

我认为最简单的解决方案是简单地在 .mat-slide-toggle 上使用scale()。我就是这样做的,并且效果非常好:

.mat-slide-toggle {
    transform: scale(0.6);
}
Run Code Online (Sandbox Code Playgroud)

这可能会将滑块向右移动。要解决这个问题:

 .mat-slide-toggle {
        transform: scale(0.6) translateX(-10px); //adjust the pixels to your scale size i
 }
Run Code Online (Sandbox Code Playgroud)


Kor*_*kas 8

发生这种情况是因为您正在设计该组件的包装器。如果您的样式被封装,您需要使用 ::ng-deep 选择器对该组件的特定类(即 .mat-slide-toggler-bar 和 .mat-slide-toggle-thumb)进行样式设置。下面是一个示例,可让您开始尝试增加切换器的大小:

::ng-deep .mat-slide-toggle-bar {
  height: 7px;
  width: 28px;
}

::ng-deep .mat-slide-toggle-thumb {
  height: 10px;
  width: 10px;
}

::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container {
    transform: translate3d(18px,0,0) !important;
}

::ng-deep .mat-slide-toggle-thumb-container {
    width: 12px;
    height: 12px;
    top: -2px;
}
Run Code Online (Sandbox Code Playgroud)

  • 我知道这有点旧了,但是 ::ng-deep 不是已被弃用吗?https://angular.io/guide/component-styles#deprecated-deep--and-ng-deep 避免使用 ::ng-deep 的一种解决方案是确保上述代码位于全局样式文件中,删除all ::ng-deep,并在每个选择器前面加上“mat-slide-toggle.mat-slide-toggle”。这将覆盖当前的 mat-slide-toggle 样式,因为它更具体。 (3认同)