MudTable单元格颜色动画需求:实现3秒后切换颜色的效果
实现MudTable单元格3秒颜色切换动画
方案:使用CSS关键帧动画
这种方式比纯C#逻辑更简洁,能直接实现定时颜色过渡效果。
- 添加CSS动画定义
在你的Blazor组件的<style>标签中加入以下代码:
/* 定义颜色过渡动画 */ @keyframes colorShift { 0% { color: #ff4444; } /* 初始颜色 */ 100% { color: #00C851; } /* 3秒后切换的目标颜色 */ } /* 应用动画的样式类 */ .cell-animate { animation: colorShift 3s forwards; /* forwards保持动画结束后的状态 */ font-size: 2.9rem; font-weight: 500; text-align: center; } /* 默认单元格样式 */ .cell-default { font-size: 0.9rem; font-weight: 500; text-align: center; }
- 修改样式判断方法
把原有的GetCellStyle改为返回CSS类名,避免内联样式的冗余:
private string GetCellClass(DateTime odbior, DateTime realizacja) { return odbior <= realizacja ? "cell-animate" : "cell-default"; }
- 更新表格单元格调用
将MudTd的Style属性替换为Class,调用新的方法:
<MudTd Class="@GetCellClass(context.odbior, context.realizacja)" DataLabel="Wysyłka"> @context.odbior.ToString("dd/MM/yyyy") </MudTd>
可选优化:动态控制颜色
如果需要在C#代码中动态修改初始/目标颜色,可以使用CSS变量:
- 在组件根元素绑定变量:
<div style="--initial-color:@_initialColor; --target-color:@_targetColor;"> <MudTable> <!-- 表格内容 --> </MudTable> </div>
- 在C#中定义颜色变量:
private string _initialColor = "#ff4444"; private string _targetColor = "#00C851";
- 修改CSS动画使用变量:
@keyframes colorShift { 0% { color: var(--initial-color); } 100% { color: var(--target-color); } }
这样就能通过修改_initialColor和_targetColor的值,动态调整动画的颜色。
内容的提问来源于stack exchange,提问作者Przemo
相关产品推荐
相关产品推荐

