图片翻转3D效果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD>

<META content="text/html; charset=gb2312" http-equiv=Content-Type>

<STYLE>HTML {

BACKGROUND: #000

}

BODY {

PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px

}

UL {

PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px

}

LI {

LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none

}

IMG {

BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none

}

.slide-wp {

POSITION: absolute; MARGIN-TOP: -150px; WIDTH: 520px; HEIGHT: 280px; MARGIN-LEFT: -250px; OVERFLOW: hidden; TOP: 50%; LEFT: 50%

}

.nav-wp {

POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN-TOP: 170px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; BACKGROUND: #ccc; MARGIN-LEFT: -100px; TOP: 50%; PADDING-TOP: 0px; LEFT: 50%; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; _padding: 0 20px 2px 10px

}

.nav LI {

FONT-FAMILY: tahoma; FLOAT: left; HEIGHT: 22px; COLOR: #22739e; MARGIN-LEFT: 10px; FONT-SIZE: 20px; CURSOR: pointer; FONT-WEIGHT: bold

}

.nav LI.cur {

COLOR: #ff7a00

}

.next {

POSITION: absolute; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #ccc; HEIGHT: 20px; COLOR: #ff7a00; TOP: 0px; CURSOR: pointer; PADDING-TOP: 4px; LEFT: 160px; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px

}

</STYLE>

<META name=GENERATOR content="MSHTML 8.00.6001.19222"></HEAD>

<BODY>

<H2 style="COLOR: #fff">对于使用IE6的同学看到的斑点,我只能表示很无奈。。。</H2>

<DIV id=slider class=slide-wp>

<UL>

  <LI><A href="http://www.nowamagic.net/" target=_blank><IMG alt="" 

  src="3d_files/1.jpg"></A></LI>

  <LI><A href="http://www.nowamagic.net/" target=_blank><IMG alt="" 

  src="3d_files/2.jpg"></A></LI>

  <LI><A href="http://www.nowamagic.net/" target=_blank><IMG alt="" 

  src="3d_files/3.jpg"></A></LI>

  <LI><A href="http://www.nowamagic.net/" target=_blank><IMG alt="" 

  src="3d_files/4.jpg"></A></LI>

  <LI><A href="http://www.nowamagic.net/" target=_blank><IMG alt="" 

  src="3d_files/5.jpg"></A></LI></UL></DIV>

<DIV class=nav-wp>

<UL id=nav class=nav>

  <LI onclick=mySlider.pos(0)>●</LI>

  <LI onclick=mySlider.pos(1)>●</LI>

  <LI onclick=mySlider.pos(2)>●</LI>

  <LI onclick=mySlider.pos(3)>●</LI>

  <LI onclick=mySlider.pos(4)>●</LI></UL><A class=next 

onclick=mySlider.move()>next</A> </DIV>

<SCRIPT type=text/javascript>

var HR = {

 $ : function(i) {return document.getElementById(i)},

 $$ : function(c, p) {return p.getElementsByTagName(c)},

 ce : function(i, t) {

  var o = document.createElement(i);

  t.appendChild(o);

  return o;

 }

};

HR.slider3D = function () {

 var init = function (o) {

  this.o = o;

  var wp = HR.$(o.id), ul = HR.$$('ul', wp)[0], li = this.li = HR.$$('li', ul);

  this.l = li.length;

  this.w = wp.offsetWidth;

  this.h = wp.offsetHeight;

  this.at = o.auto? o.auto : 4;

  var con = this.con = HR.ce('div', wp);

  con.style.cssText = 'position:absolute;left:0;top:0;'+this.w+'px;height:'+this.h+'px';

  ul.style['display'] = 'none';  

  this.a1 = HR.ce('a', con);  

  this.a1.style.cssText = 'position:absolute;left:0;top:0;overflow:hidden';  

  this.a2 = HR.ce('a', con);

  this.a2.style.cssText = 'position:absolute;top:0;right:0;overflow:hidden';

  this.a1.innerHTML = this.a2.innerHTML = '<img alt="" />';

  this.img = HR.$$('img', ul);

  this.s = o.maskSize ? o.maskSize : 5;

  

  this.mask11 = HR.ce('span', this.a1);

  this.mask12 = HR.ce('span', this.a1);

  this.mask21 = HR.ce('span', this.a2);

  this.mask22 = HR.ce('span', this.a2);

  

  this.pos(0);

 }

 init.prototype = {

  pos : function (i) {

   clearInterval(this.li[i].a); clearInterval(this.au); this.au = 0; this.cur = i;

   var navli = HR.$$('li', HR.$(this.o.navId));

   for (var j=0; j<navli.length; j++) {

    navli[j].className = i == j ? 'cur' : '';

   }

   var img1 = HR.$$('img', this.a1)[0], img2 = HR.$$('img', this.a2)[0], _this = this;

   img1.src = i==0 ? this.img[this.l-1].src : this.img[i-1].src;

   img1.width = this.w;

   img2.src = this.img[i].src;

   img2.width = 0;

   img1.height = img2.height = this.h;

   this.mask11.style.cssText = 'position:absolute;left:0;top:0;font-size:0;overflow:hidden;0;height:0;border-color:black transparent transparent black;border-style:solid dashed dashed solid;border-0 '+this.w/2+'px';

   this.mask12.style.cssText = 'position:absolute;left:0;bottom:0;font-size:0;overflow:hidden;0;height:0;border-color:transparent transparent black black;border-style:dashed dashed solid solid;border-0 '+this.w/2+'px';

   this.mask21.style.cssText = 'position:absolute;right:0;top:0;font-size:0;overflow:hidden;0;height:0;border-color:black black transparent transparent;border-style:solid solid dashed dashed;border-0px';

   this.mask22.style.cssText = 'position:absolute;right:0;bottom:0;font-size:0;overflow:hidden;0;height:0;border-color:transparent black black transparent;border-style:dashed solid solid dashed;border-0px';

   this.li[i].a = setInterval(function(){_this.anim(i)}, 20);

  },

  anim : function (i) {

   var w1 = HR.$$('img', this.a1)[0].width, w2  = HR.$$('img', this.a2)[0].width;

   if (w2 == this.w) {

    clearInterval(this.li[i].a);

    HR.$$('img', this.a1)[0].width = 0;

    HR.$$('img', this.a2)[0].width = this.w;

    this.mask11.style.borderLeftWidth = this.mask11.style.borderRightWidth = this.mask12.style.borderLeftWidth = this.mask12.style.borderRightWidth = '0px';

    this.mask11.style.borderTopWidth = this.mask11.style.borderBottomWidth = this.mask12.style.borderTopWidth = this.mask12.style.borderBottomWidth = this.h/this.s + 'px';

    this.mask21.style.borderLeftWidth = this.mask21.style.borderRightWidth = this.mask22.style.borderLeftWidth = this.mask22.style.borderRightWidth = this.w/2 + 'px';

    this.mask21.style.borderTopWidth = this.mask21.style.borderBottomWidth = this.mask22.style.borderTopWidth = this.mask22.style.borderBottomWidth = '0px';

   }else {

    HR.$$('img', this.a1)[0].width -= Math.ceil((this.w-w2)*.13);

    HR.$$('img', this.a2)[0].width += Math.ceil((this.w-w2)*.13);

    this.mask11.style.borderLeftWidth = this.mask11.style.borderRightWidth = this.mask12.style.borderLeftWidth = this.mask12.style.borderRightWidth = HR.$$('img', this.a1)[0].width/2 + 'px';

    this.mask11.style.borderTopWidth = this.mask11.style.borderBottomWidth = this.mask12.style.borderTopWidth = this.mask12.style.borderBottomWidth = HR.$$('img', this.a2)[0].width*this.h/(this.s*this.w) + 'px';

    this.mask21.style.borderLeftWidth = this.mask21.style.borderRightWidth = this.mask22.style.borderLeftWidth = this.mask22.style.borderRightWidth = HR.$$('img', this.a2)[0].width/2 + 'px';

    this.mask21.style.borderTopWidth = this.mask21.style.borderBottomWidth = this.mask22.style.borderTopWidth = this.mask22.style.borderBottomWidth = this.h/this.s - HR.$$('img', this.a2)[0].width*this.h/(this.s*this.w) + 'px';

    if (!this.au) this.auto();

   }

  },

  auto : function () {

   var _this = this;

   this.au = setInterval(function(){_this.move()}, this.at*1000);

  },

  move : function () {

   var n = this.cur==this.l-1 ? 0 : this.cur+1;

   this.pos(n);

  }

 }

 return init;

}();

var mySlider = new HR.slider3D({

 id: 'slider',

 maskSize: 6,

 navId: 'nav',

 auto: 4

})</SCRIPT>

</BODY></HTML>


原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100398.html