马赛克切换(切片) 1

拉幕效果

HTML

<input type="button" value="下一张" id="btn_next" />
<div id="box">
</div>

CSS

*{
		margin:0;
		padding:0;
	}
	#box{
		margin:0px auto;
		width:400px;
		height:300px;
	}
	#box span{
		float:left;
	}

JavaScript

var imgs = [
	"http://wenwen.soso.com/p/20110219/20110219110946-1382018702.jpg",
	"http://img6.91huo.cn/game/2012/09/19/news_pic_1348106963692.png"];
	
	//var imgs = ["img/0.jpg", "img/1.jpg", "img/2.jpg"];

	window.onload = function(){

		// 切成5行8列,从上往下顺序切换。注意一定要整除 !!!!!!!
		//var rows = 5;
		//var cols = 8;
        
		// 如果切成 1 行 100 列,就成了拉幕效果 !!!!!!!!
        var rows = 1;
        var cols = 100;

		var box = document.getElementById("box");
		var width = box.offsetWidth / cols;
		var height = box.offsetHeight / rows;

		var timer = null;
		var now = 0; 

		for (var r=0; r<rows ;r++ ) {
			for (var c=0; c<cols ; c++ ) {
				var oSpan = document.createElement("span");
				
				oSpan.style.backgroundImage = "url(" + imgs[0] + ")";
				oSpan.style.width = width + "px";
				oSpan.style.height = height + "px";

				box.appendChild(oSpan);
				
				var left = c * width;
				var top = r * height;
				oSpan.style.left = left + "px";
				oSpan.style.top = top + "px";

				oSpan.style.backgroundPosition = "-"+ left + "px -" + top + "px";
			}
		}

		// 是否可以切换
		var ready = true;
		var btn = document.getElementById("btn_next");
		btn.onclick = function(){
			if(!ready){
				return ;
			}
			ready = false;
			
			box.style.background = "url(" + imgs[now] + ")";
			now++;

			if(now == imgs.length){
				now = 0;
			}
			
			var aSpan = box.children;
			var i = 0;

			clearInterval(timer);
			timer = setInterval(function(){
				aSpan[i].style.opacity = 0;
				aSpan[i].style.filter = "alpha(opacity:0)";

				(function(index){
					startMove(aSpan[i], {opacity:100},{time:500, end:function(){
						if(index == aSpan.length - 1){
							ready = true;
						}
					}});
				})(i);

				aSpan[i].style.backgroundImage = "url("+ imgs[now] +")";
				i++;
				
				if(i == aSpan.length){
					clearInterval(timer);
				}
			}, 20);
		};
	};
		


// 运动框架 简单解释:http://www.html-js.com/article/DOM-framework-JS-native-motion-effect

/// <summary>
/// 运动框架,支持匀速、缓冲,加速等运动
/// </summary>
///...