这是一个解决方案。这涉及使用具有透明度的单独绝对定位的 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 转换选项并让它循环直到满足条件。