禁用 mat-slider 上的交互并保持 css 样式
Disable interactions on mat-slider and keeping css styles
我正在尝试制作一个始终在屏幕上带有拇指标签的只读垫滑块。
我有我的 mat-slider 组件
<mat-slider
class="example-margin"
[disabled]="false"
[thumbLabel]="true"
[tickInterval]="tickInterval"
[(ngModel)]='value'
>
</mat-slider>
为了让缩略图标签始终可见,我使用了这些 css 属性
::ng-deep .mat-slider-thumb-label {
transform: rotate(45deg) !important;
border-radius: 50% 50% 0 !important;
}
::ng-deep .mat-slider-thumb {
transform: scale(0) !important;
}
::ng-deep .mat-slider-thumb-label-text {
opacity: 1 !important;
}
为了停止与 mat-slider
的交互,我使用了 disabled=true
,但是当我这样做时,样式消失了,拇指标签也消失了,然后我在栏中得到一个空的 space
这是我想要的,但禁用了交互
这里是Demo
禁用它不会像预期的那样工作。一种解决方案是覆盖禁用的 class 样式,这将是很多而不是最佳解决方案。
我建议只禁用指针事件。
例如
.example-margin {
pointer-events: none;
}
这将不允许指针交互,您的用例已解决:)
这可以通过在控件上禁止指针事件来实现。我已经修改了一些 CSS 并且指针事件也被禁用了。
CSS
::ng-deep .mat-slider-thumb-label {
transform: rotate(45deg) !important;
background-color: #ffd740 !important; <-- make color important so it will not change or disappear in any condition
border-radius: 50% 50% 0 !important;
}
添加了内联样式
style="pointer-events: none;"
Stackbliz URL : https://stackblitz.com/edit/angular-fkzv3z
分享在 Angular 8 中工作的解决方案,而无需使用 ::ng-deep(见下面的注释)
在您的垫子滑块中指定以下内容
- class:"cdk-focused"
- 风格:指针事件:none
样本HTML代码碎片
<mat-slider class="cdk-focused" style="pointer-events:none;" min="0" max="100" thumbLabel="true"
disabled="false" [value]="item.percent" [displayWith]="formatPercentage">
</mat-slider>
我正在尝试制作一个始终在屏幕上带有拇指标签的只读垫滑块。
我有我的 mat-slider 组件
<mat-slider
class="example-margin"
[disabled]="false"
[thumbLabel]="true"
[tickInterval]="tickInterval"
[(ngModel)]='value'
>
</mat-slider>
为了让缩略图标签始终可见,我使用了这些 css 属性
::ng-deep .mat-slider-thumb-label {
transform: rotate(45deg) !important;
border-radius: 50% 50% 0 !important;
}
::ng-deep .mat-slider-thumb {
transform: scale(0) !important;
}
::ng-deep .mat-slider-thumb-label-text {
opacity: 1 !important;
}
为了停止与 mat-slider
的交互,我使用了 disabled=true
,但是当我这样做时,样式消失了,拇指标签也消失了,然后我在栏中得到一个空的 space
这是我想要的,但禁用了交互
这里是Demo
禁用它不会像预期的那样工作。一种解决方案是覆盖禁用的 class 样式,这将是很多而不是最佳解决方案。
我建议只禁用指针事件。
例如
.example-margin {
pointer-events: none;
}
这将不允许指针交互,您的用例已解决:)
这可以通过在控件上禁止指针事件来实现。我已经修改了一些 CSS 并且指针事件也被禁用了。
CSS
::ng-deep .mat-slider-thumb-label {
transform: rotate(45deg) !important;
background-color: #ffd740 !important; <-- make color important so it will not change or disappear in any condition
border-radius: 50% 50% 0 !important;
}
添加了内联样式
style="pointer-events: none;"
Stackbliz URL : https://stackblitz.com/edit/angular-fkzv3z
分享在 Angular 8 中工作的解决方案,而无需使用 ::ng-deep(见下面的注释)
在您的垫子滑块中指定以下内容
- class:"cdk-focused"
- 风格:指针事件:none
样本HTML代码碎片
<mat-slider class="cdk-focused" style="pointer-events:none;" min="0" max="100" thumbLabel="true"
disabled="false" [value]="item.percent" [displayWith]="formatPercentage">
</mat-slider>