<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js-图片旋转</title>
<style type="text/css">
*{ margin:0; padding:0}
#box{ position: relative; width:552px; height:200px; border:1px solid #999; margin:100px; background:#666666}
#box img{ width:150px; height:200px}
#bg {width:100%; height:100%; position:absolute; left:0; top:0; filter:alpha(opacity:60); opacity:0.6; background:black; z-index:1000;}
#prog {width:324px; height:40px; background:url(images/bar.png) no-repeat 0 20px; position:absolute; z-index:2000; top:50%; left:50%; margin:-20px 0 0 -162px; font-family:arial; font-size:12px; color:#fff; text-align:center;}
#prog span {font-family:"宋体";}
.btn1,.btn2{ z-index:800; position:absolute;width:50px; height:30px; line-height:30px}
.btn1{ top:80px; right:60px; }
.btn2{ top:80px; left:60px}
#bar {width:0%; height:16px; background:url(images/bar_line.gif) repeat-x; overflow:hidden; position:absolute; bottom:2px; left:2px;}
.div1{ position:absolute; top:0px; left:0px; width:150px; height:200px; background:#0033CC; opacity:0.1; z-index:10}
.div2{ position:absolute; top:0px; left:100px; width:150px;height:200px; background: #000;opacity:0.3; z-index:50}
.div3{ position:absolute; top:0px; left:200px; width:150px; height:200px;background: #F90;opacity:1; z-index:100}
.div4{ position:absolute; top:0px; left:300px; width:150px;height:200px; background: #60C;opacity:0.3; z-index:50}
.div5{ position:absolute; top:0px; left:400px; width:150px; height:200px;background: #F90;opacity:0.1; z-index:10}
</style>
</head>
<body>
<div id="box">
<div id="bg"></div>
<div id="prog">
图片载入中......<span>0%</span>
<div id="bar"></div>
</div>
<div id="btnBox"><button class="btn1">前一张</button><button class="btn2">后一张</button></div>
<div id="zbox">
<div class="div1"><img src="" width="150" height="200" /></div>
<div class="div2"><img src="" width="150" height="200" /></div>
<div class="div3"><img src="" width="150" height="200" /></div>
<div class="div4"><img src="" width="150" height="200" /></div>
<div class="div5"><img src="" width="150" height="200" /></div>
</div>
</div>
<script type="text/javascript">
var aBox=document.getElementById("box");
var zBox=document.getElementById("zbox");
var oImg=zBox.getElementsByTagName("img");
var oBtn0=aBox.getElementsByTagName("button")[0];
var oBtn1=aBox.getElementsByTagName("button")[1];
var div=zBox.getElementsByTagName("div");
var oTxt=document.getElementById('prog').getElementsByTagName('span')[0];
var oBar=document.getElementById('bar');
var arr=[];
var imgsrc=[
"http://pic.desk.chinaz.com/file/201211/5/shierybizi7.jpg",
"http://img7.9158.com/200709/01/11/53/200709018758949.jpg",
"http://img7.9158.com/200708/10/09/18/200708103758836.jpg",
"http://img.pconline.com.cn/images/photoblog/1/0/1/7/10173588/200911/7/1257560022502_mthumb.jpg",
"http://ishare.iask.sina.com.cn/play.php?fileid=8156385&path=20100610_7881956_0.jpg"
];
var bBtn=true;
var icenter=2;
var timer=null;
var iLoad=0;
//图片预加载
for(var i=0;i<oImg.length;i++){
(function(i){
var Img=new Image();
Img.src=imgsrc[i];
Img.onload=function(){
oTxt.innerHTML=oBar.style.width=Math.ceil(100*iLoad/oImg.length)+'%';
Img.onload=null;
oImg[i].src=this.src;
iLoad+=1;
if(iLoad==oImg.length){
document.getElementById('prog').style.display=document.getElementById('bg').style.display='none';
aBox.style.display="block";
imgAuto();
}
}
})(i)
}
function imgAuto(){
for(var i=0;i<div.length;i++){
arr.push([getStyle(div[i],"left"),getStyle(div[i],"top"),getStyle(div[i],"opacity"),i,getStyle(div[i],"zIndex")]);
div[i].style.left=200+"px";
div[i].style.top=0+"px";
}
setTimeout(function(){
for(var i=0;i<div.length;i++){
startMove(div[i],{left:parseInt(arr[i][0]),top:parseInt(arr[i][1]),opacity:arr[i][2]*100,zIndex:parseInt(arr[i][4])});
}
},500);
oBtn0.onclick=function(){
if(bBtn){
bBtn=false;
arr.push(arr.shift());
dh();
}
}
oBtn1.onclick=function(){
if(bBtn){
bBtn=false;
arr.unshift(arr.pop());
dh();
}
}
aBox.onmouseover=function(){
clearInterval(timer);
}
aBox.onmouseout=function(){
timer=setInterval(function(){
arr.push(arr.shift());
dh();
},3000);
}
timer=setInterval(function(){
arr.push(arr.shift());
dh();
},3000);
for(var i=0;i<div.length;i++){
div[i].index=i;
div[i].onclick=function(){
var num=arr[this.index][3];
if(num<icenter){
for(var i=0;i<icenter-num;i++){
arr.push(arr.shift());
dh();
}
}
if(num>icenter){
for(var i=0;i<num-icenter;i++){
arr.unshift(arr.pop());
dh();
}
}
}
}
function dh(){
for(var i=0;i<div.length;i++){
startMove(div[i],{left:parseInt(arr[i][0]),top:parseInt(arr[i][1]),opacity:arr[i][2]*100,zIndex:parseInt(arr[i][4])},function(){
bBtn=true;
});
}
}
}
function startMove(obj, json, fnEnd)
{
clearInterval(obj.timer);
obj.timer=setInterval(function (){
var bStop=true; //假设:所有值都已经到了
for(var attr in json)
{
var cur=0;
if(attr=='opacity')
{
cur=Math.round(parseFloat(getStyle(obj, attr))*100);
}
else
{
cur=parseInt(getStyle(obj, attr));
}
var speed=(json[attr]-cur)/6;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
if(cur!=json[attr])
bStop=false;
if(attr=='opacity')
{
obj.style.filter='alpha(opacity:'+(cur+speed)+')';
obj.style.opacity=(cur+speed)/100;
}
else if(attr=="zIndex"){
obj.style[attr]=cur+speed;
}else
{
obj.style[attr]=cur+speed+'px';
}
}
if(bStop)
{
clearInterval(obj.timer);
if(fnEnd)fnEnd();
}
}, 30);
}
function getStyle(obj, name)
{
if(obj.currentStyle)
{
return obj.currentStyle[name];
}
else
{
return getComputedStyle(obj, false)[name];
}
}
</script>
</body>
</html>