<html>
<head>
<style type="text/css">
div#bg1 {
height: 159px;
width: 800px;
margin-left: auto;
margin-right: auto;
background-image: url('images/bg1.jpg');
background-repeat: no-repeat;
background-position:center center;
position: relative;
z-index: 3;
}
div#bg2 {
height: 159px;
width: 800px;
margin-left: auto;
margin-right: auto;
background-image: url('images/bg2.jpg');
background-repeat: no-repeat;
background-position:center center;
position: relative;
z-index: 2;
margin-top: -159px;
}
</style>
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function Animate_2()
{
$("div#bg1").animate({opacity: 100}, 2000);
$("div#bg2").animate({opacity: 0 }, 2000);
setTimeout(Animate_1, 5000);
}
function Animate_1()
{
$("div#bg1").animate({opacity: 0 }, 2000);
$("div#bg2").animate({opacity: 100}, 2000);
setTimeout(Animate_2, 5000);
}
$(function()
{
/* Start cycle */
setTimeout(Animate_1, 5000);
});
</script>
</head>
<body>
<div id="bg1"></div>
<div id="bg2"></div>
</body>
</html>
Animate_1()工作正常,但Animate_2()只显示bg2.jpg而不动画不透明度..这在IE和Firefox中是相同的。
为什么这是&gt; ??
答案 0 :(得分:1)
你真正的问题是不透明度是0到1的标度,而不是0到100.但这里有一些小的改进:
你可以简化代码,因为你只有一个图像在另一个上面。
<script type="text/javascript">
var shown = true;
function toggleFront() {
shown = !shown;
$("div#bg1").animate({opacity: shown*1}, 200);
window.setTimeout(toggleFront, 1000);
}
$(function() {
/* Start cycle */
window.setTimeout(toggleFront, 500);
});
</script>
我已经搞乱你的时间值以更快地显示它。
或修复它。在setTimeout之前需要window.
。简单的修复。
<script type="text/javascript">
function Animate_2()
{
$("div#bg1").animate({opacity: 1}, 2000);
$("div#bg2").animate({opacity: 0 }, 2000);
window.setTimeout(Animate_1, 5000);
}
function Animate_1()
{
$("div#bg1").animate({opacity: 0 }, 2000);
$("div#bg2").animate({opacity: 1}, 2000);
window.setTimeout(Animate_2, 5000);
}
$(function()
{
/* Start cycle */
window.setTimeout(Animate_1, 5000);
});
</script>
答案 1 :(得分:0)
我无法获得您在Firefox 3.0.10 Ubuntu上描述的相同结果,Animate_2
似乎工作正常。起初我以为可能是因为你可能正在使用本地文件,而不是通过localhost服务器(如apache)运行你的页面,但这并没有改变我的结果,但我记得在Windows平台上工作的问题在过去。我也尝试使用以下预加载脚本,这似乎删除了我的机器上的初始动画口吃:
jQuery.preloadImages = function() { for(var i = 0; i").attr("src", arguments[i]); } } $.preloadImages("imgages/bg1.jpg", "imgages/bg2.jpg");