简约的手风琴图片展示效果图

发布时间:2020年07月15日      浏览次数:461 次
<html>
<head>
<title>简约的手风琴图片展示效果图</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#slider { clear:both; width: 1190px; height: 275px; border: 1px #ddd solid; position:relative; overflow: hidden; }
      #slider .slide { position: absolute; top: 0px; width: 435px; height: 275px; border-left: 1px #ddd solid; background-color:#fff; overflow: hidden;}
            #slider .slide img{ width:100%; height:100%;}
                  #slider .tp { position: absolute; filter: alpha(opacity=100); opacity: 1; visibility: hidden;}
            #slider .text { position: absolute; top: 1%; top: 100%; left: 10px; width: 470px; color: #FFF; font-size: 0.9em; text-align: justify; }
                  #slider .text .title { color: #fff; font-weight: bold; font-size: 1.2em; margin-right: 1.5em; text-decoration: none;}
            #slider .backgroundText { position: absolute; width: 100%; height: 100%; top: 100%; background-color:#000; filter: alpha(opacity=40); opacity: 0.4;}
</style>
</head>
<body>
<div id="slider">
      <div class="slide">
            <img class="tp" src="images/1.jpg" alt="">
            <div class="text"><span class="title">标题1</span> 这里是内容1。</div>
      </div>
      <div class="slide">
            <img class="tp" src="images/2.jpg" alt="">
            <div class="text"><span class="title">标题2</span> 这里是内容2。</div>
      </div>
      <div class="slide">
            <img class="tp" src="images/3.jpg" alt="">
            <div class="text"><span class="title">标题3</span> 这里是内容3。</div>
      </div>
      <div class="slide">
            <img class="tp" src="images/4.jpg" alt="">
            <div class="text"><span class="title">标题4</span> 这里是内容4。</div>
      </div>
      <div class="slide">
            <img class="tp" src="images/5.jpg" alt="">
            <div class="text"><span class="title">标题5</span> 这里是内容5。</div>
      </div>
</div>
<script type="text/javascript">
var slider = function() {
      function getElementsByClass(object, tag, className) {
            var o = object.getElementsByTagName(tag);
            for ( var i = 0, n = o.length, ret = []; i < n; i++) {
                  if (o[i].className == className) ret.push(o[i]);
            }
            if (ret.length == 1) ret = ret[0];
            return ret;
      }
      function setOpacity (obj,o) {
            if (obj.filters) obj.filters.alpha.opacity = Math.round(o);
            else obj.style.opacity = o / 100;
      }
      //滑块构造函数
      function Slider(oCont, speed, iW, iH, oP) {
            this.slides = [];
            this.over = false;
            this.S = this.S0 = speed;
            this.iW = iW;
            this.iH = iH;
            this.oP = oP;
            this.oc = document.getElementById(oCont);
            this.frm = getElementsByClass(this.oc, 'div', 'slide');
            this.NF = this.frm.length;
            this.resize();
            for (var i = 0; i < this.NF; i++) {
                  this.slides[i] = new Slide(this, i);
            }
            this.oc.parent = this;
            this.view = this.slides[0];
            this.Z = this.mx;
            
            //鼠标悬停事件
            //this.oc.onmouseout = function () {
            //      this.parent.mouseout();
            //      return false;
            //}
      }
      Slider.prototype = {
            //动画循环
            run : function () {
                  this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5;
                  this.view.calc();
                  var i = this.NF;
                  while (i--) this.slides[i].move();
            },
            //调整大小
            resize : function () {
                  this.wh = this.oc.clientWidth;
                  this.ht = this.oc.clientHeight;
                  this.wr = this.wh * this.iW;
                  this.r = this.ht / this.wr;
                  this.mx = this.wh / this.NF;
                  this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1);
            },
            //休息
            mouseout : function () {
                  this.over = false;
                  setOpacity(this.view.img, this.oP);
            }
      }
      //幻灯片构造函数
      Slide = function (parent, N) {
            this.parent = parent;
            this.N = N;
            this.x0 = this.x1 = N * parent.mx;
            this.v = 0;
            this.loaded = false;
            this.cpt = 0;
            this.start = new Date();
            this.obj = parent.frm[N];
            this.txt = getElementsByClass(this.obj, 'div', 'text');
            this.img = getElementsByClass(this.obj, 'img', 'tp');
            this.bkg = document.createElement('div');
            this.bkg.className = 'backgroundText';
            this.obj.insertBefore(this.bkg, this.txt);
            if (N == 0) this.obj.style.borderLeft = 'none';
            this.obj.style.left = Math.floor(this.x0) + 'px';
            setOpacity(this.img, parent.oP);
            //鼠标事件
            this.obj.parent = this;
            this.obj.onmouseover = function() {
                  this.parent.over();
                  return false;
            }
      }
      Slide.prototype = {
            //目标位置
            calc : function() {
                  var that = this.parent;
                  //左幻灯片
                  for (var i = 0; i <= this.N; i++) {
                        that.slides[i].x1 = i * that.Z;
                  }
                  //右幻灯片
                  for (var i = this.N + 1; i < that.NF; i++) {
                        that.slides[i].x1 = that.wh - (that.NF - i) * that.Z;
                  }
            },
            //HTML动画:移动幻灯片
            move : function() {
                  var that = this.parent;
                  var s = (this.x1 - this.x0) / that.S;
                  //横向滑动
                  if (this.N && Math.abs(s) > .5) {
                        this.obj.style.left = Math.floor(this.x0 += s) + 'px';
                  }
                  //垂直文本
                  var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0;
                  if (Math.abs(v - this.v) > .5) {
                        this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + 'px';
                        this.v = v;
                        this.cpt++;
                  } else {
                        if (!this.pro) {
                              //调整速度
                              this.pro = true;
                              var tps = new Date() - this.start;
                              if(this.cpt > 1) {
                                    that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0);
                              }
                        }
                  }
                  if (!this.loaded) {
                        if (this.img.complete) {
                              this.img.style.visibility = 'visible';
                              this.loaded = true;
                        }
                  }
            },
            //灯光
            over : function () {
                  this.parent.resize();
                  this.parent.over = true;
                  setOpacity(this.parent.view.img, this.parent.oP);
                  this.parent.view = this;
                  this.start = new Date();
                  this.cpt = 0;
                  this.pro = false;
                  this.calc();
                  setOpacity(this.img, 100);
            }
      }
      //公共方法-脚本初始化
      return {
            init : function() {
                  //在此处创建滑块实例
                  //参数:HTML容器ID、速度(2快速-20慢速)、水平移动比率、文本垂直移动比率、不透明度
                  this.myslider = new Slider("slider", 12, 1.1/3, 1/3, 90);
                  setInterval("slider.myslider.run();", 16);
            }
      }
}();

slider.init(); //开始执行
</script>
</body>
</html>
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!