2016-11-22 89 views
0

我有以下CSS代码片段,用于在用户选择一个输入框时动画/移动某些标签文本。只运行一次CSS动画

input:focus ~ label, input.used ~ label { 
    top: -20px; 
    transform: scale(.75); left: -2px; 
    color: #4a89dc; 
} 

这工作正常,但我面临一个问题。当我选择一个不同的输入时,标签文本会回到原来的位置并重叠旧文本。

我要么要标签文字一起消失,要么我想让它留在它的新位置。换句话说,它不应该回到它不活跃的位置。

+3

尝试创建一个js小提琴或发布一些更多的代码在这里进行测试。 – Muhammad

+0

这是正确的。我这样做,问题是照顾。谢谢。 –

回答

0

唯一的答案就是给元素添加一个类,然后在新类上添加xyz。

例子是使用jQuery:

$('label').on('focus',function(){ 
    $(this).addClass('theClass'); 
}); 

一旦你已经有了类在那里你可以告诉元素做你的愿望:

.theClass { 
    top:-20px; 
} 

这将让你的元素-20px。你可以用香草js做到这一点:

document.getElementById('label').addEventListener('focus', function() { 
if (this.classList.contains('item')) { 
    this.classList.add('item-off'); 
    } 
}); 

你必须添加项目类到你的标签。

+0

为这样一个小问题包含jQuery真的值得吗? –

+0

如果没有javascript,则无法确定用户是否已访问该元素。你可以用原生js做到,但jQuery足够简单,现在已经包含在大多数项目中。 –