锁定老帖子 主题:模拟Google世界地球日的Doodle
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-22
最后修改:2012-04-22
直接上代码吧。
CSS部分: #doodle { position: relative; margin-top: 35px; height: 182px; width: 468px; overflow: hidden; } #doodle img{ position:absolute; border:none; height:364px; left:0; top:0; width:468px }
HTML部分: <div id="doodle" title="世界地球日"> <img src="image/a.jpg" id="_a"> <img src="image/b.jpg" id="_b"> <img src="image/b.jpg" id="_c"> </div>
JavaScript部分: (function() { var divMain, imgA, imgB, imgC, timer={}, topMargin, flag, //设置透明度 setOpacityFn = function(dom, val) { if (dom) { dom.style.display = val > 0 ? 'block' : 'none'; dom.style.filter = val < 100 ? 'alpha(opacity:' + val + ')' : ''; //IE val = (val < 100 ? val : 100) / 100; dom.style.opacity = val; //W3C dom.style.MozOpacity = val; //Fx } }, //清除定时器 clearTimerFn = function() { window.clearTimeout(timer.show); window.clearTimeout(timer.grow); }, //入口函数 mainFn = function() { clearTimerFn(); //初始化变量,获得dom引用等 divMain = document.getElementById('doodle'); imgA = document.getElementById('_a'); imgB = document.getElementById('_b'); imgC = document.getElementById('_c'); topMargin = 0; flag = !1; if (divMain && imgA && imgB && imgC) { //占位用img var img = document.createElement('img'); img.style.visibility = 'hidden'; img.onload = imgOnloadFn; img.src = 'image/b.jpg'; divMain.appendChild(img); //执行onload事件 } }, imgOnloadFn = function() { clearTimerFn(); imgB.style.height = imgC.style.height = '2912px'; imgB.src = imgC.src = 'image/b.jpg'; setOpacityFn(imgB, 0); setOpacityFn(imgC, 0); imgB.style.display = imgC.style.display = ''; flowerGrowFn(); }, //花朵成长过程的每个图都是渐渐展现 flowerShowFn = function(dom, val) { if (dom) { setOpacityFn(dom, val); if (val < 99) //每50ms透明度增加11,半秒内完全显示出来 timer.show = window.setTimeout(function() { flowerShowFn(dom, val + 11); }, 50); } }, //花朵生长过程 flowerGrowFn = function() { var a = flag ? imgB : imgC, b = flag ? imgC : imgB; a.style.zIndex = 4; b.style.zIndex = 3; window.clearTimeout(timer.show); flowerShowFn(a, 0); a.style.top = -topMargin + 'px'; topMargin = Math.floor(topMargin + 182); //生长过程计时器 timer.gow = topMargin < 2912 ? window.setTimeout(flowerGrowFn, 500) : window.setTimeout(flowerFullbloomFn, 500); flag = !flag; }, //完全开放,哦也~ flowerFullbloomFn = function() { window.clearTimeout(timer.show); imgA.style.top = '-182px'; imgA.style.zIndex = 5; flowerShowFn(imgA, 0); }; mainFn(); })();
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-04-23
我对图像更感兴趣。
|
|
返回顶楼 | |
发表时间:2012-04-23
唉,百度又抄袭啊,出了个什么2012世界末日大地震,草!
|
|
返回顶楼 | |
发表时间:2012-04-24
楼主,我对你的头像更感兴趣
|
|
返回顶楼 | |
发表时间:2012-04-24
LZ,我对你的头像更感兴趣~
|
|
返回顶楼 | |
发表时间:2012-04-24
为啥会闪烁
|
|
返回顶楼 | |
发表时间:2012-04-24
头像是你本人吗?是就求交往!
|
|
返回顶楼 | |
发表时间:2012-04-24
popshadow 写道 LZ,我对你的头像更感兴趣~
+1 |
|
返回顶楼 | |
发表时间:2012-04-24
能长这样 还做程序员
|
|
返回顶楼 | |
发表时间:2012-04-24
yaolifei 写道 能长这样 还做程序员
+1 |
|
返回顶楼 | |