超酷动态图片展示墙JS特效制作方法

<!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>
<script type=‘text/javascript‘ src=‘http://drmcmm.baidu.com/js/m.js‘></script>
<script type=‘text/javascript‘>
BAIDU_CLB_addSlot(‘10305‘);
BAIDU_CLB_enableAllSlots();
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>JS动态图片墙展示效果</title>
<style type="text/css">
 html {
  overflow: hidden;
 }
 body {
  margin: 0px;
  padding: 0px;
  background: #222;
  position: absolute;
  width: 100%;
  height: 100%;
 }
 #screen {
  position:absolute;
  left: 0%;
  top: 0%;
  width: 100%;
  height: 100%;
  background: #000;
  overflow: hidden;
  cursor: url("../cross_rm.cur"), auto;
 }
 #pan {
  position: absolute;
  height: 150%;
  width: 150%;
  padding: 5%;
  background: #000000 url("images/bumps2.gif");
 }
 #screen .frame {
  position: relative;
  float: left;
  width: 29%;
  height: 27%;
  margin: 2%;
  background: #000;
  overflow: hidden;
 }
 #screen .slider {
  position: absolute;
  width: 100%;
  height: 100%;
  background: #222 url("images/bumps3.gif");
  z-index: 1000;
 }
 #pan img {
  position: absolute;
  visibility: hidden;
 }
 #pan .legend {
  position: absolute;
  bottom: 0px;
  font-size: 1em;
  color: #FFF;
  width: 2000px;
  font-family: arial;
  font-weight: bold;
 }
</style>

<script type="text/javascript">
var xm = 0;
var ym = 0;

sP = {
 cx : 0,
 cy : 0,
 N  : 0,
 R  : [],
 I  : [],
 C  : [],
 L  : [],
 Id : 0,

 init : function ()
 {
  /* ==== init script ==== */
  this.scr = document.getElementById(‘screen‘);
  this.pan = document.getElementById(‘pan‘);
  this.div = this.pan.getElementsByTagName(‘div‘);
  this.scr.onselectstart = function () { return false; }
  this.scr.ondrag        = function () { return false; }
  /* ==== for each pane ==== */
  for (var i = 0, o; o = this.div[i]; i++)
  {
   if (o.className == ‘frame‘)
   {
    /* ==== create legend ==== */
    o.l = document.createElement(‘div‘);
    o.l.className = ‘legend‘;
    o.appendChild(o.l);
    /* ==== create flap ==== */
    o.r = document.createElement(‘div‘);
    o.r.className = ‘slider‘;
    o.appendChild(o.r);
    o.r.x = 0;
    o.r.l = o.l;
    o.r.p = 0;
    o.r.s = 2;
    o.r.m = false;
    o.img = o.r.img = o.getElementsByTagName(‘img‘)[0];
    o.r.c = Math.random() * 100;
    o.r.o = o;
    sP.R[sP.N] = o.r;
    sP.I[sP.N] = o.img.src;
    sP.L[sP.N] = o.title;
    o.title = "";
    sP.N++;
    /* ==== flap mouse over event ==== */
    o.r.onmouseover = function ()
    {
     if (!this.m && this.img.complete)
     {
      /* ==== switch image ==== */
      if (sP.O != this && !this.n)
      {
       this.x = this.o.offsetWidth;
       this.l.innerHTML = sP.L[sP.Id];
       this.img.src = sP.I[sP.Id];
       this.resize();
       this.n = true;
       if(++sP.Id >= sP.N)
       {
        sP.Id = 0;
        for (var i = 0, o; o = sP.R[i]; i++) o.n = false;
       }
      }
      /* ==== up++ ==== */
      if (sP.O)
      {
       sP.O.s = 2;
       sP.C.push(sP.O);
      }
      this.m = true;
      sP.O = this;
      sP.Or = this;
     }
    }
    /* ==== resize image ==== */
    o.r.resize = function ()
    {
     var i = new Image();
     i.src = this.img.src;
     this.img.style.width  = (i.width  < this.offsetWidth) ? Math.round(this.offsetWidth  * 1.25) + ‘px‘ : Math.round(i.width) + ‘px‘;
     this.img.style.height = (i.height < this.offsetHeight) ? Math.round(this.offsetHeight * 1.25) + ‘px‘ : Math.round(i.height) + ‘px‘;
     this.w = (this.img.offsetWidth  - this.offsetWidth)  * .5;
     this.h = (this.img.offsetHeight - this.offsetHeight) * .5;
     this.img.style.visibility = ‘visible‘;
    }
   }
  }
  /* ==== start script ==== */
  sP.resize();
  sP.run();
 },

 resize : function () {
  /* ==== window resize ==== */
  var o = sP.scr;
  sP.nw = o.offsetWidth;
  sP.nh = o.offsetHeight;
  sP.iw = sP.pan.offsetWidth;
  sP.ih = sP.pan.offsetHeight;
  for (sP.nx = 0, sP.ny = 0; o != null; o = o.offsetParent)
  {
   sP.nx += o.offsetLeft;
   sP.ny += o.offsetTop;
  }
  for (var i = 0, o; o = sP.R[i]; i++) o.resize();
 },

 /* ==== main loop ==== */
 run : function ()
 {
  /* ==== scroll main frame ==== */
  sP.cx += (((Math.max(-sP.nw, Math.min(0, (sP.nw * .5 - (xm - sP.nx) * 2))) * (sP.iw - sP.nw)) / sP.nw) - sP.cx) * .1;
  sP.cy += (((Math.max(-sP.nh, Math.min(0, (sP.nh * .5 - (ym - sP.ny) * 2))) * (sP.ih - sP.nh)) / sP.nh) - sP.cy) * .1;
  sP.pan.style.left = Math.round(sP.cx) + ‘px‘;
  sP.pan.style.top  = Math.round(sP.cy) + ‘px‘;
  /* ==== lissajou ==== */
  if(sP.O) {
   sP.O.c += .015;
   sP.O.img.style.left = Math.round(-sP.O.w + sP.O.w * Math.sin(sP.O.c * 1.1)) + ‘px‘;
   sP.O.img.style.top  = Math.round(- sP.O.h + sP.O.h * Math.sin(sP.O.c)) + ‘px‘;
   sP.O.l.style.left = Math.round(sP.O.x--) + ‘px‘;
  }
  /* ==== up ==== */
  if (sP.Or)
  {
   sP.Or.p -= sP.Or.s;
   sP.Or.s *= 1.1;
   if (sP.Or.p < -sP.Or.offsetHeight)
   {
    sP.Or.p = -sP.Or.offsetHeight;
    sP.Or.s = 2;
    sP.Or.m = false;
    sP.Or = false;
   }
   sP.O.style.top = Math.round(sP.O.p) + ‘px‘;
  }
  /* ==== down ==== */
  for (var i = 0, c; c = sP.C[i]; i++)
  {
   if (c != sP.Or)
   {
    c.p += c.s;
    c.s *= 1.2;
    if (c.p >= 0)
    {
     c.p = 0;
     c.s = 2;
     c.m = false;
     sP.C.splice(i, 1);
    }
    c.style.top = Math.round(c.p) + ‘px‘;
   } else {
    c.s = 2;
    c.m = false;
    sP.C.splice(i, 1);
   }
  }
  setTimeout(sP.run, 16);
 }
}

/* ==== global mouse position ==== */
document.onmousemove = function(e)
{
 if (window.event) e = window.event;
 xm = e.clientX;
 ym = e.clientY;
 return false;
}
</script>
</head>

<body>

<div id="screen">
 <div id="pan">
  <div class="frame" title=""><img  src="images/img_3.jpg" alt=""></div>
  <div class="frame" title=""><img   src="images/img_5.jpg" alt=""></div>
  <div class="frame" title=""><img  src="images/img_6.jpg" alt=""></div>
  <div class="frame" title=""><img  src="images/img_12.jpg" alt=""></div>
  <div class="frame" title=""><img  src="images/img_4.jpg" alt=""></div>
  <div class="frame" title=""><img  src="images/img_9.jpg" alt=""></div>
  <div class="frame" title=""><img src="images/img_2.jpg" alt=""></div>
  <div class="frame" title=""><img src="images/img_7.jpg" alt=""></div>
  <div class="frame" title=""><img src="images/img_8.jpg" alt=""></div>
 </div>
</div>

<script type="text/javascript">
 /* ==== start script ==== */
 sP.init();
 onresize = sP.resize;
</script>

另存为HTML查看吧,有机会加上演示。主要是不会上传html,谁能教教我?

时间: 2024-10-17 18:44:46

超酷动态图片展示墙JS特效制作方法的相关文章

jquery动态加载js/css文件方法

先来看jquery自带的getSrcript文件 方法 代码如下 复制代码 $.getScript(url,callback) 实例 代码如下 复制代码 var testVar = 'New JS loaded!'; alert(testVar); function newFun(dynParam) { alert('You just passed '+dynParam+ ' as parameter.'); } 动态调用方法 HTML代码 代码如下 复制代码 <script type="

4种纯CSS3超酷页面切换过渡动画特效

这是一款4种效果非常炫酷的纯CSS3页面切换过渡动画特效.该CSS3页面过渡动画使用CSS keyframes制作而成,所有的动画效果和延时都是使用CSS属性,没有任何的javascript timeout()代码. 所有的4个页面切换效果都使用相同的js文件(用于点击事件和页面关闭事件)和CSS文件.每个demo的class名称略有区别.所有的demo都在 Chrome.Safari.Firefox.Opera.IE11 和 IE10浏览器上做了测试(还有iOS也做了测试). 效果演示:htt

纯CSS3超酷3D旋转立方体动画特效

这是一款效果非常炫酷的纯CSS3 3D旋转立方体动画特效.该3D立方体使用CSS3 perspective制作,可以在水平方向.垂直方向和平面视角方向旋转,效果相当震撼.使用CSS3来制作动画效果已经成为WEB前端开发的一种时尚,从简单的颜色和尺寸动画,到复杂的旋转.翻转动画, CSS3展现了它无穷的魅力.使用CSS来制作立方体动画,代码简洁易懂,效果更是令人惊叹! 在线演示:http://www.htmleaf.com/Demo/201501251274.html 下载地址:http://ww

方格图片轮换JS特效

心血来潮想用js做个方格移动的图片轮换,于是捣鼓了小半天弄出来了.DEMO下载效果如下:

图片展示js特效

html 代码片段,做一个table表格 <table width="798" height="276" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center"><table border="0"

CSS3实现的超酷动态圆形悬浮效果

在线演示 本地下载 了解代码是如何开发的? 请参考并且播放如下代码轻视频: http://www.gbtags.com/gb/rtreplayerpreview/151.htm

jquery如何动态加载js文件

jquery如何动态加载js文件:本章节和大家分享一下几种动态加载js文件的方法,希望能够给需要的朋友带来帮助.方法一: $.getscript("test.js"); 方法二: function loadjs(file) { var head = $('head').remove('#loadscript'); $("<scri"+"pt>"+"</scr"+"ipt>").att

Android三步显示gif动态图片

今天给大家带来一个显示gif动态图片的类库,使用方法很简单,只需三步. 1.把GifView.jar加入你的项目. 2.在布局xml中这样写: <com.ant.liao.GifView android:id="@+id/gif1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:paddingTop="4px&quo

动态加载js文件

动态加载js并执行方法(先js再调用方法) 方法一:// jq封装方法获取到js成功后 再执行initMap(); jQuery.getScript()函数用于通过HTTP GET形式的加载JavaScript文件并运行它 函数可以加载跨域的JS文件.请注意,该函数是通过异步方式加载数据的. $.getScript("http://webapi.amap.com/maps?v=1.3&key=fc1cc89768a5da46f78aaed607835069",function(