• 酷炫图片展示特效


      1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      2 <html xmlns="http://www.w3.org/1999/xhtml">
      3 
      4 <head>
      5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      6 <title>超酷超绚精美图片展示效果代码(六) - 网页特效观止-网页特效代码|JsCode.CN|</title>
      7 <style type="text/css">
      8     html {
      9         overflow: hidden;
     10     }
     11     body {
     12         position: absolute;
     13         margin: 0px;
     14         padding: 0px;
     15         background: #111;
     16         width: 100%;
     17         height: 100%;
     18     }
     19     #screen {
     20         position: absolute;
     21         left: 10%;
     22         top: 10%;
     23         width: 80%;
     24         height: 80%;
     25         background: #000;
     26     }
     27     #screen img {
     28         position: absolute;
     29         cursor: pointer;
     30         visibility: hidden;
     31         width: 0px;
     32         height: 0px;
     33     }
     34     #screen .tvover {
     35         border: solid #876;
     36         opacity: 1;
     37         filter: alpha(opacity=100);
     38     }
     39     #screen .tvout {
     40         border: solid #fff;
     41         opacity: 0.7;
     42     }
     43     #bankImages {
     44         display: none;
     45     }
     46 </style>
     47 <script type="text/javascript">
     48 var Library = {};
     49 Library.ease = function () {
     50     this.target = 0;
     51     this.position = 0;
     52     this.move = function (target, speed)
     53     {
     54         this.position += (target - this.position) * speed;
     55     }
     56 }
     57 
     58 var tv = {
     59     /* ==== variables ==== */
     60     O : [],
     61     screen : {},
     62     grid : {
     63         size       : 4,  // 4x4 grid
     64         borderSize : 6,  // borders size
     65         zoomed     : false
     66     },
     67     angle : {
     68         x : new Library.ease(),
     69         y : new Library.ease()
     70     },
     71     camera : {
     72         x    : new Library.ease(),
     73         y    : new Library.ease(),
     74         zoom : new Library.ease(),
     75         focalLength : 750 // camera Focal Length
     76     },
     77 
     78     /* ==== init script ==== */
     79     init : function ()
     80     {
     81         this.screen.obj = document.getElementById('screen');
     82         var img = document.getElementById('bankImages').getElementsByTagName('img');
     83         this.screen.obj.onselectstart = function () { return false; }
     84         this.screen.obj.ondrag        = function () { return false; }
     85         /* ==== create images grid ==== */
     86         var ni = 0;
     87         var n = (tv.grid.size / 2) - .5;
     88         for (var y = -n; y <= n; y++)
     89         {
     90             for (var x = -n; x <= n; x++)
     91             {
     92                 /* ==== create HTML image element ==== */
     93                 var o = document.createElement('img');
     94                 var i = img[(ni++) % img.length];
     95                 o.className = 'tvout';
     96                 o.src = i.src;
     97                 tv.screen.obj.appendChild(o);
     98                 /* ==== 3D coordinates ==== */
     99                 o.point3D = {
    100                     x  : x,
    101                     y  : y,
    102                     z  : new Library.ease()
    103                 };
    104                 /* ==== push object ==== */
    105                 o.point2D = {};
    106                 o.ratioImage = 1;
    107                 tv.O.push(o);
    108                 /* ==== on mouse over event ==== */
    109                 o.onmouseover = function ()
    110                 {
    111                     if (!tv.grid.zoomed)
    112                     {
    113                         if (tv.o)
    114                         {
    115                             /* ==== mouse out ==== */
    116                             tv.o.point3D.z.target = 0;
    117                             tv.o.className = 'tvout';
    118                         }
    119                         /* ==== mouse over ==== */
    120                         this.className = 'tvover';
    121                         this.point3D.z.target = -.5;
    122                         tv.o = this;
    123                     }
    124                 }
    125                 /* ==== on click event ==== */
    126                 o.onclick = function ()
    127                 {
    128                     if (!tv.grid.zoomed)
    129                     {
    130                         /* ==== zoom in ==== */
    131                         tv.camera.x.target = this.point3D.x;
    132                         tv.camera.y.target = this.point3D.y;
    133                         tv.camera.zoom.target = tv.screen.w * 1.25;
    134                         tv.grid.zoomed = this;
    135                     } else {
    136                         if (this == tv.grid.zoomed){
    137                             /* ==== zoom out ==== */
    138                             tv.camera.x.target = 0;
    139                             tv.camera.y.target = 0;
    140                             tv.camera.zoom.target = tv.screen.w / (tv.grid.size + .1);
    141                             tv.grid.zoomed = false;
    142                         }
    143                     }
    144                 }
    145                 /* ==== 3D transform function ==== */
    146                 o.calc = function ()
    147                 {
    148                     /* ==== ease mouseover ==== */
    149                     this.point3D.z.move(this.point3D.z.target, .5);
    150                     /* ==== assign 3D coords ==== */
    151                     var x = (this.point3D.x - tv.camera.x.position) * tv.camera.zoom.position;
    152                     var y = (this.point3D.y - tv.camera.y.position) * tv.camera.zoom.position;
    153                     var z = this.point3D.z.position * tv.camera.zoom.position;
    154                     /* ==== perform rotations ==== */
    155                     var xy = tv.angle.cx * y  - tv.angle.sx * z;
    156                     var xz = tv.angle.sx * y  + tv.angle.cx * z;
    157                     var yz = tv.angle.cy * xz - tv.angle.sy * x;
    158                     var yx = tv.angle.sy * xz + tv.angle.cy * x;
    159                     /* ==== 2D transformation ==== */
    160                     this.point2D.scale = tv.camera.focalLength / (tv.camera.focalLength + yz);
    161                     this.point2D.x = yx * this.point2D.scale;
    162                     this.point2D.y = xy * this.point2D.scale;
    163                     this.point2D.w = Math.round(
    164                                        Math.max(
    165                                          0,
    166                                          this.point2D.scale * tv.camera.zoom.position * .8
    167                                        )
    168                                      );
    169                     /* ==== image size ratio ==== */
    170                     if (this.ratioImage > 1)
    171                         this.point2D.h = Math.round(this.point2D.w / this.ratioImage);
    172                     else
    173                     {
    174                         this.point2D.h = this.point2D.w;
    175                         this.point2D.w = Math.round(this.point2D.h * this.ratioImage);
    176                     }
    177                 }
    178                 /* ==== rendering ==== */
    179                 o.draw = function ()
    180                 {
    181                     if (this.complete)
    182                     {
    183                         /* ==== paranoid image load ==== */
    184                         if (!this.loaded)
    185                         {
    186                             if (!this.img)
    187                             {
    188                                 /* ==== create internal image ==== */
    189                                 this.img = new Image();
    190                                 this.img.src = this.src;
    191                             }
    192                             if (this.img.complete)
    193                             {
    194                                 /* ==== get width / height ratio ==== */
    195                                 this.style.visibility = 'visible';
    196                                 this.ratioImage = this.img.width / this.img.height;
    197                                 this.loaded = true;
    198                                 this.img = false;
    199                             }
    200                         }
    201                         /* ==== HTML rendering ==== */
    202                         this.style.left = Math.round(
    203                                             this.point2D.x * this.point2D.scale +
    204                                             tv.screen.w - this.point2D.w * .5
    205                                           ) + 'px';
    206                         this.style.top  = Math.round(
    207                                             this.point2D.y * this.point2D.scale +
    208                                             tv.screen.h - this.point2D.h * .5
    209                                           ) + 'px';
    210                         this.style.width  = this.point2D.w + 'px';
    211                         this.style.height = this.point2D.h + 'px';
    212                         this.style.borderWidth = Math.round(
    213                                                    Math.max(
    214                                                      this.point2D.w,
    215                                                      this.point2D.h
    216                                                    ) * tv.grid.borderSize * .01
    217                                                  ) + 'px';
    218                         this.style.zIndex = Math.floor(this.point2D.scale * 100);
    219                     }
    220                 }
    221             }
    222         }
    223         /* ==== start script ==== */
    224         tv.resize();
    225         mouse.y = tv.screen.y + tv.screen.h;
    226         mouse.x = tv.screen.x + tv.screen.w;
    227         tv.run();
    228     },
    229 
    230     /* ==== resize window ==== */
    231     resize : function ()
    232     {
    233         var o = tv.screen.obj;
    234         tv.screen.w = o.offsetWidth / 2;
    235         tv.screen.h = o.offsetHeight / 2;
    236         tv.camera.zoom.target = tv.screen.w / (tv.grid.size + .1);
    237         for (tv.screen.x = 0, tv.screen.y = 0; o != null; o = o.offsetParent)
    238         {
    239             tv.screen.x += o.offsetLeft;
    240             tv.screen.y += o.offsetTop;
    241         }
    242     },
    243 
    244     /* ==== main loop ==== */
    245     run : function ()
    246     {
    247         /* ==== motion ease ==== */
    248         tv.angle.x.move(-(mouse.y - tv.screen.h - tv.screen.y) * .0025, .1);
    249         tv.angle.y.move( (mouse.x - tv.screen.w - tv.screen.x) * .0025, .1);
    250         tv.camera.x.move(tv.camera.x.target, tv.grid.zoomed ? .25 : .025);
    251         tv.camera.y.move(tv.camera.y.target, tv.grid.zoomed ? .25 : .025);
    252         tv.camera.zoom.move(tv.camera.zoom.target, .05);
    253         /* ==== angles sin and cos ==== */
    254         tv.angle.cx = Math.cos(tv.angle.x.position);
    255         tv.angle.sx = Math.sin(tv.angle.x.position);
    256         tv.angle.cy = Math.cos(tv.angle.y.position);
    257         tv.angle.sy = Math.sin(tv.angle.y.position);
    258         /* ==== loop through all images ==== */
    259         for (var i = 0, o; o = tv.O[i]; i++)
    260         {
    261             o.calc();
    262             o.draw();
    263         }
    264         /* ==== loop ==== */
    265         setTimeout(tv.run, 32);
    266     }
    267 }
    268 
    269 /* ==== global mouse position ==== */
    270 var mouse = {
    271     x : 0,
    272     y : 0
    273 }
    274 document.onmousemove = function(e)
    275 {
    276     if (window.event) e = window.event;
    277     mouse.x = e.clientX;
    278     mouse.y = e.clientY;
    279     return false;
    280 }
    281 
    282 </script>
    283 </head>
    284 
    285 <body>
    286 
    287 <div id="screen">
    288 </div>
    289 <div id="bankImages">
    290     <img alt="" src="2764450_130035075_2.jpg">
    291     <img alt="" src="2764450_130035075_2.jpg">
    292     <img alt="" src="2764450_130035075_2.jpg">
    293     <img alt="" src="2764450_130035075_2.jpg">
    294     <img alt="" src="2764450_130035075_2.jpg">
    295     <img alt="" src="2764450_130035075_2.jpg">
    296     <img alt="" src="2764450_130035075_2.jpg">
    297     <img alt="" src="2764450_130035075_2.jpg">
    298     <img alt="" src="2764450_130035075_2.jpg">
    299     <img alt="" src="2764450_130035075_2.jpg">
    300     <img alt="" src="2764450_130035075_2.jpg">
    301     <img alt="" src="2764450_130035075_2.jpg">
    302     <img alt="" src="2764450_130035075_2.jpg">
    303     <img alt="" src="2764450_130035075_2.jpg">
    304     <img alt="" src="2764450_130035075_2.jpg">
    305     <img alt="" src="2764450_130035075_2.jpg"> </div>
    306 <script type="text/javascript">
    307     /* ==== start script ==== */
    308     onresize = tv.resize;
    309     tv.init();
    310 </script>
    311 
    312 </body>
    313 
    314 </html>
  • 相关阅读:
    shell基础--变量的数值计算
    shell基础--字符串和变量的操作
    shell基础--shell特殊变量
    Asp.net MVC 控制器扩展方法实现jsonp
    ASP.NET web api 跨域请求
    asp.net Web API简单的特性路由配置
    ASP.Net Web API 输出缓存 转载 -- Output caching in ASP.NET Web API
    基础拾遗 C# Json 与对象相互转换
    内存溢出和内存泄漏
    软件测试面试题(一)
  • 原文地址:https://www.cnblogs.com/a1225234/p/4708048.html
Copyright © 2020-2023  润新知