淡出一个元素的焦点和模糊
Fading an element onfocus and onblur
页面上有一个单词计数器,用于计算每个输入元素的字符数。
当一个输入元素被聚焦时,一个fadeIn
函数被触发在计数器元素中淡出。当输入元素失去焦点时,即模糊,计数器上触发fadeOut
功能。
然而,当你聚焦和模糊元素几次,在快速间隔使用鼠标或键盘,褪色效果被注意到越来越少。淡入淡出的计数器最终只在不透明度:0和1之间闪烁。需要刷新页面才能再次实现淡出效果,直到它再次出错。
这个问题也会触发,如果你通过所有元素的标签,并重新开始关注浏览器的地址栏。
为什么会发生这种情况?这是否与渐隐功能和setInterval
有关?
下面是我从http://www.scriptiny.com使用的一个示例淡出函数:
var fadeEffect=function(){
return{
init:function(id, flag, target){
this.elem = document.getElementById(id);
clearInterval(this.elem.si);
this.target = target ? target : flag ? 100 : 0;
this.flag = flag || -1;
this.alpha = this.elem.style.opacity ? parseFloat(this.elem.style.opacity) * 100 : 0;
this.si = setInterval(function(){fadeEffect.tween()}, 20);
},
tween:function(){
if(this.alpha == this.target){
clearInterval(this.elem.si);
}else{
var value = Math.round(this.alpha + ((this.target - this.alpha) * .05)) + (1 * this.flag);
this.elem.style.opacity = value / 100;
this.elem.style.filter = 'alpha(opacity=' + value + ')';
this.alpha = value
}
}
}
}();
也许是因为你没有正确地做clearInterval()
。您正在像这样设置间隔:
this.si = setInterval();
但是像这样清除间隔:
clearInterval(this.elem.si)
它们不应该都是this.si
或者都是this.elem.si
吗?
另外,您如何调用fadeEffect
?你使用new fadeEffect()
吗?当您调用方法时,您确定this
被正确处理了吗?
使用jquery可能你正在寻找这样的行为:
$(document).ready(function () {
$('#test').fadeTo('fast', 0.5); // to set default opacity. CSS can be used here
$('#test').focus(function () {
$(this).fadeTo('fast', 1);
}).blur(function () {
$(this).fadeTo('fast', 0.5);
});
});
下面是一个实例:http://jsfiddle.net/hrzw7/1/
如果你有很多这样的控件,使用.class
选择器:http://jsfiddle.net/hrzw7/3/
相关文章:
- 如果模糊事件的任何一个子项获得焦点,请阻止启动模糊事件
- Javascript:联合焦点模糊
- 当孩子获得焦点时触发模糊事件
- 初学者尝试使用焦点/模糊:JavaScript
- 如何防止在html中模糊(焦点丢失)时取消选择所选文本
- 当我失去焦点时,不会触发ng模糊
- iframe 中输入上的模糊/焦点事件(委派)
- 如果单击焦点元素的子元素,则会在获得焦点的父元素上触发模糊事件
- 在调用窗口模糊(浏览器失去焦点)时避免元素模糊处理程序
- 如何为 @Html.Editor() 编写焦点和模糊事件
- 在 nsiWindowWatcher 或 nsiWindowMediator 上监听焦点/模糊?对于火狐扩展
- Typeahead Angular JS:在输入模糊后显示焦点结果
- 将焦点返回到具有相同类的输入的模糊上
- 如何将iframe与模糊和焦点一起使用
- Chrome(也许是Safari?)激发了“;模糊”;当浏览器失去焦点时,在输入字段上显示两次
- 正确捕获选项卡焦点/模糊
- 如何在javascript中从焦点模糊事件中获取元素值
- ace编辑器的焦点/模糊方法显然不能与termlib.js集成
- 替换/重建输入元素和更新PrototypeJS焦点/模糊函数
- IE增加了文本框焦点模糊