1

我正在构建一个验证表单的小插件。我正在尝试添加一个动画,将输入背景从白色变为红色(作为警告标志)。我还是 CSS3 动画的新手,实现 CSS3 动画的最佳方式是什么?

以下添加了动画发生的类:

$(this).addClass('animationBG');

那么动画本身就是:

.animationBG{
    -webkit-animation-name: bgAnimation;
    -webkit-animation-duration: 3s;
    animation-iteration-count: infinite;
}

@-webkit-keyframes bgAnimation {
  from {
    background-color:#fff;
  }

  to {
    background-color:red;
  }
}

完整代码在这里。

4

1 回答 1

1

这是一个解决方案。这涉及使用具有透明度的单独绝对定位的 div。

http://jsfiddle.net/jessekinsman/xywKm/3/

的HTML

    <div class="container">
    <div class="background">  
    </div>
    <input type="text" name="test" class="white" /> 
</div>

CSS

* {
    box-sizing: border-box;
    -webkit-box-sizing: border-box;

}
.container {
    width: 200px;
    height: 50px;
    overflow: hidden;
    position: relative;
}

.background {
    position: absolute;
    left: 100%;
    background: red;
    width: 100%;
    height: 100%;
    -webkit-transition: left 300ms linear;
    transition: left 300ms linear;
    opacity: 0.5;
    -webkit-opacity: 0.5;
    z-index:0;
}
.background.view {
    left: 0;
}

.white {
    background-color: white;
}
.red {
    background-color: red;
}
input {
    background-color: transparent none;
    width: 100%;
    height: 100%;
    z-index: 100;
}

jQuery 只是为了添加和删除类

$("input").focus(function(e){
    $(".background").addClass("view");
});
$("input").focusout(function(e){
    $(".background").removeClass("view");
});

可能是最好的选择,除非您在输入元素上有一些您不想松散的特定样式。然后你应该使用背景图像。

这是该小提琴的链接 http://jsfiddle.net/jessekinsman/5aL4L/1/

也不确定您是否希望动画循环直到满足某些条件。如果是这种情况,您应该使用 css 转换选项并让它循环直到满足条件。

于 2013-03-12T17:40:34.163 回答