【问题标题】:Animating using css on class change在类更改上使用 css 制作动画
【发布时间】:2016-06-14 05:20:14
【问题描述】:

我正在尝试通过更改类名来使用 javascript 为表单按钮的 css 属性设置动画。属性更改已应用但没有动画,我不明白为什么。以下是我的代码:

css:

button {
    padding-right: 0px;
    transition: padding-right 2.5s;

}

button.inactive {
    padding-right: 0px;

}

button.active {
    padding-right: 100px;
}

javascript(用于过渡到活动):

this.form.getElementsByTagName("button")[0].className ="active";

(用于过渡到非活动状态):

this.form.getElementsByTagName("button")[0].className ="inactive";

【问题讨论】:

  • 动画应该在css部分的.active和.inactive标签内。
  • 你的意思是过渡:行吗?

标签: javascript css class animation


【解决方案1】:

我使用您提供的代码模拟了一个示例,并且动画过渡没有问题 - 可以在此处看到 https://jsbin.com/qewolu/edit?html,css,js,output

【讨论】:

  • 至少在 Firefox for Mac 上坏了。
【解决方案2】:

在这一行,

this.form.getElementsByTagName("button")[0].className ="active";

您如何获得对表单元素的引用?

我认为您需要在访问按钮之前获取表单元素的引用。

这样的东西会更好。

var form = document.myForm;
form.getElementsByTagName("button")[0].className ="active"; 

演示https://jsfiddle.net/84133s8v/

【讨论】:

    【解决方案3】:

    this.document.getElementsByTagName("a")[0].addEventListener('click', function() {this.className ="active"});
        a {
            padding: 10px;  
            border: 1px solid #39C;
            background-color: #036;
            color: white;
            transition: padding-right 2.5s;      
        }
    
        a.inactive {
            padding: 10px;
        }
    
        a.active {
            padding-right: 100px;
        }
    <a class="inactive">Test</a>

    编辑

    的确,@Rhi,他的原始代码部分在 Chrome 上运行button 元素似乎不支持 Firefox 上的填充过渡。一种可能的解决方法是改用锚元素并将<A> 标记设置为看起来像一个按钮。请试试这个答案的 sn-p。

    【讨论】:

    • 问题与jQuery无关。
    • 是的,我不想使用 jquery。
    • 您不必这样做。只需将代码中的transition: padding-right 2.5s; 行更改为transition: padding 2.5s;,然后检查它是否有效。代码 sn-p 正在运行。
    • 它仍然没有随着那个变化而动画。
    • 您使用的是什么浏览器和操作系统?这个问题的所有答案确实不适用于 Firefox。
    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 2011-07-16
    相关资源
    最近更新 更多