cfr*_*cfr 2 css angular-material angular angular-animations mat-tab
我想禁用 Angular Material mat-tab 动画(内容滑动到位时发生的动画)。我知道可以使用 [@.disabled] 属性,但我想知道是否可以使用纯 css 实现相同的效果。
编辑:
我们的 UX 团队希望从材质选项卡中删除幻灯片动画,因为他们认为无论出于何种原因都不合适。我们有多个项目可能会多次使用选项卡组件,因此我们想要一种方法来移除当前选项卡和即将出现的选项卡的动画。理想情况下,我们不想告诉人们向他们的 HTML 中添加(并开始添加)任何属性(他们可能会忘记这样做)。此外,这些项目有一个提供主要 css 样式的项目作为依赖项。这个想法是在所有项目之间共享的主 css 样式表中删除这些动画。我们尝试添加以下内容,但没有奏效:
.mat-tab-body-content, .mat-tab-body, .mat-tab-body-wrapper {
transition: none !important;
transform: none !important;
animation-duration: 0ms !important;
}
Run Code Online (Sandbox Code Playgroud)
Din*_*ino 18
Angular Material 没有提供覆盖动画的官方方法,因此除非你真的需要它,否则我不会建议它(你将不得不为此做一些肮脏的黑客攻击)。看看您的情况,没有必要覆盖 CSS,因为您可以通过应用animationDurationto来获得相同的结果mat-tab-group- 这也是官方解决方案。
<mat-tab-group animationDuration="0ms">
<mat-tab label="First">Content 1</mat-tab>
<mat-tab label="Second">Content 2</mat-tab>
<mat-tab label="Third">Content 3</mat-tab>
</mat-tab-group>
Run Code Online (Sandbox Code Playgroud)
如果要将更改全局应用于项目中的每个选项卡组,则必须注入 MAT_TABS_CONFIG
app.module.ts
import { MAT_TABS_CONFIG } from '@angular/material';
@NgModule({
...
providers: [
{ provide: MAT_TABS_CONFIG, useValue: { animationDuration: '0ms' } }
]
})
Run Code Online (Sandbox Code Playgroud)
为了在内容更改之间禁用动画,我使用了@me-sa 解决方案:
<div [@.disabled]="true">
<mat-tab-group >
<mat-tab label="First"> Content 1 </mat-tab>
<mat-tab label="Second"> Content 2 </mat-tab>
<mat-tab label="Third"> Content 3 </mat-tab>
</mat-tab-group>
</div>
Run Code Online (Sandbox Code Playgroud)
并工作,谢谢!
至于垫子标签边框动画,这对我有用:
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
/* IE10+ CSS styles go here */
.mat-tab-group *{
transition: none!important;
transition-duration: 0ms!important;
transition-delay: 0ms!important;
}
}
@supports (-ms-accelerator:true) {
/* IE Edge 12+ CSS styles go here */
.mat-tab-group *{
transition: none!important;
transition-duration: 0ms!important;
transition-delay: 0ms!important;
}
}
Run Code Online (Sandbox Code Playgroud)