通过 JavaScript 更改 marginTop-property 会导致 FireFox 出现错误的结果
Changing marginTop-property via JavaScript leads to wrong result in FireFox
我的问题:通过JavaScript更改边距顶部属性objectName.style.marginTop = value;
Chrome和Safari中效果很好,但是在Firefox中,定位似乎都是错误的。Firefox 不是将元素放在视口上,然后降低它直到它略低于所需位置,然后将其向上移动一点,而是将其放置在最终位置下方,向上移动然后向下移动,几乎镜像所需的动画。
如果我切换Javascript并在CSS中输入值,定位就可以了,所以我想错误在于.js。
上下文:我正在尝试通过JavaScript创建一个简单的动画徽标。我希望它从浏览器视口外部下降到它的位置。徽标是 HTML 元素<img id="site_logo" src="logo.png" />
下面是 JavaScript 代码:
var logoValue = -400;
function onLoad(){
// ...
logoStarter();
}
function logoStarter(){ //sets the logo in its starting position outside the viewport
var site_logo = document.getElementById("site_logo");
site_logo.style.marginTop = logoValue +"px";
logoAnimationDown();
}
function logoAnimationDown(){ // moves the logo down until it is somewhat underneath its final position
if(logoValue <= 20){
console.log(logoValue);
logoValue += 17;
var site_logo = document.getElementById("site_logo");
site_logo.style.marginTop = logoValue +"px";
setTimeout('logoAnimationDown()', 30);
}
else{
setTimeout('logoAnimationUp()', 30);
}
}
function logoAnimationUp(){ // moves the logo up to its final position
if(logoValue > 0){
console.log(logoValue);
logoValue -= 10;
var site_logo = document.getElementById("site_logo");
site_logo.style.marginTop = logoValue + "px";
setTimeout('logoAnimationUp()', 30);
}
}
FF似乎执行了两次该过程。像这样声明您的setTimeout
:
setTimeout(logoAnimationDown, 30);
setTimeout(logoAnimationUp, 30);
如果使用这种带引号的字符串setTimeout('doFunction()',30)
来分配目标函数,FF 会这样做:eval('doFunction()')
,并立即执行该函数(由于 "()"),然后在延迟时间后再次执行。
相关文章:
- 如何知道javascript for语句中的所有结果是否都是错误的
- JScript 错误: 无法分配给函数结果
- json-api和错误结果:无法读取属性'长度'的未定义
- 显示错误结果的Javascript
- javascript使用正则表达式得到错误的结果
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- YouTube API v3哈希标签搜索错误结果
- jQuery.Validate - 如何将错误结果放在不同的地方
- 检查JavaScript中的日期时间是否相等时出现错误结果
- 转换日期时出现错误结果
- Lodash partialRight padStart映射产生错误结果
- 在javascript中乘法的错误结果
- 用于显示错误结果的JavaScript嵌套
- 什么'这是处理promise对象中错误结果的正确方法
- 显示错误结果的typeOf
- Javascript getDate()和getMonth()返回错误结果
- LokiJS:简单的查找查询返回错误结果
- Bootstrap-datepicker getDate错误结果
- 比较select.val()和span.text()后产生错误结果
- 坐标转换javascript库Pro4js错误结果