【问题标题】:Angular 2 - css transition on element with ngStyleAngular 2 - 具有 ngStyle 的元素上的 css 过渡
【发布时间】:2017-02-19 19:16:53
【问题描述】:

当要更新的属性与 [ngStyle] 或 [style.property] 绑定时,我无法使我的 css 转换工作

HTML:

<div class="bar" [style.width]="size +'%'"></div>

CSS:

.bar{ width:0; transition: width .5s ease-out; }

JS : size 已正确更新...

可以肯定的是,如果我删除 html 中的样式绑定并更新 :hover 上的宽度,则转换正在工作。我想念什么吗?

如果我让 [style.width] 绑定并将其悬停在前。宽度:50%!重要的是,过渡有效。尽管这不是我想要实现的,但看起来 ngStyle 会阻止转换。并且 !important 是必需的。

但这也不起作用:

[ngStyle]="{'width': size +'% !important'}"

【问题讨论】:

    标签: angular css-transitions


    【解决方案1】:

    使用此设置,您必须延迟绑定大小变量,

    export class AppComponent{
    
      constructor(){
         setTimeout(()=>{
            this.size=20;
         },1000)
      }
    
    }
    

    【讨论】:

    • 好的,过渡适用于您的解决方案的这种特定情况。但在我的情况下,大小是根据更大对象内的 2 个参数计算的。当我延迟这个更大对象的设置时,它不起作用。如果我在超时时为每个孩子设置一个新属性“百分比”,则每次更新时转换从 0 开始...
    • 但只需将 size 变量包装在 settimeout 内即可。
    • 否则你必须使用 angular2 动画。
    • 谢谢。好吧,这不是很方便。不明白为什么它首先不起作用...更新带有过渡的 css 属性应该是直截了当的
    • 那是因为 angular2 绑定首先被解析,然后 css 被应用到 dom 元素。所以先绑定然后css这就是问题所在。使用 angular2 动画,否则您必须延迟绑定。
    猜你喜欢
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2018-09-06
    相关资源
    最近更新 更多