javascript - Angular Animations - 如何在状态之间保持样式?
问题描述
我开始研究 Angular Animations 并遇到了一种我不知道这是否是动画表现的正常方式的行为。
所以我在介绍页面中编写了代码,一切正常,这是我现在拥有的代码:
组件.ts
@Component({
selector: 'app-component-one',
templateUrl: './component-one.component.html',
styleUrls: ['./component-one.component.scss'],
animations: [
trigger('toggle', [
state('open', style({
height: '200px',
opacity: 1,
backgroundColor: 'yellow'
})),
state('closed', style({
height: '100px',
opacity: 0.8,
backgroundColor: '#C6ECFF'
})),
transition('open => closed', [
animate('.5s ease-in')
]),
transition('closed => open', [
animate('.5s ease-out')
]),
])
]
})
export class ComponentOneComponent {
isOpen = true;
toggle = () => (this.isOpen = !this.isOpen);
}
组件.html
<button (click)="toggle()" [@toggle]="isOpen ? 'open' : 'closed'">
{{ isOpen ? "OPEN" : "CLOSED" }}
</button>
正如人们所看到的,这是一个简单的代码。情况是在动画之间,背景颜色在最终变为黄色或蓝色之前变为灰色,它不会将离开状态的样式保持为将要进入的状态。
所以我有想法在我的文件上更改 de CSS .scss
,看看添加属性是否会导致它的行为符合预期,并且它起作用了!
因此,添加以下代码:
button {
width: 100px; // this is some extra, the button was jumping when the button text changed
background-color: white;
}
使状态之间的过渡工作正常,它还产生了某种渐变效果。
在StackBlitz中做了一个工作示例,只需取消注释 CSS 文件中的 CSS background-color 属性,您就会看到发生了什么。
所以我的问题是,如何在过渡完成之前保持 CSS 样式的状态?有没有办法让它表现得像 CSS 背景颜色解决方案?
如果您还想解释为什么它会这样,将不胜感激。
解决方案
推荐阅读
- github - 在 github 页面前加上 www 返回 404
- android - 使用 Qualcomm 编解码器的自定义分辨率时,MediaCodec 的结果出现乱码
- php - 如何使用 foreach 将多个文件名存储到 phpmyadmin 数据库中?
- html - 使用 html 音频制作播放暂停开关
- python - 重启后 pip 包丢失包数据
- reactjs - 在 Ant Design 中为 Checkbox 设置动态样式
- reactjs - 错误:[ThemeProvider] 请将您的主题道具设为普通对象
- javascript - 我如何在 react redux 中访问另一个 reducer 的状态。reducer 和 store 之间的状态流
- java - 静态方法中的 Application.properties
- python - 如果玩家在 x 秒内没有移动,请在 pygame 中执行某些操作