图片滑动slider

代码非原创,自己有改动

当改为垂直切换时,要将container的width设为一张图片的宽度,此时图片的排列是垂直的,切换时才会一张换一张

<style type="text/css">
  .main {margin:0; padding:0;width:300px; height:140px; position:relative;overflow: hidden;}
  .container, .container *{margin:0; padding:0;}
  .container{width:1500px; height:140px; position:relative;}
  .slider{position:relative;}
   
  .slider li{
  list-style:none;
  list-style-image:inherit;
  display:block;
  float: left;
  color: #004985;
  text-align: center;
  line-height: 20px;
  font-size: 16px;
  cursor:pointer;
  overflow:hidden;
  // background-color: #ddd;
  }
  .slider img{ width:300px; height:120px; display:block;border:0;list-style: none;}
   
  .num{ position:absolute; width: 600px;left:5px; bottom:0px;}
  .num li{
  float: left;
  list-style:none;
  color: #004985;
  text-align: center;
  line-height: 20px;
  width: 20px;
  height: 20px;
  font-family: Arial;
  font-size: 20px;
  cursor: pointer;
  overflow: hidden;
  margin-right: 245px;
  filter:alpha(opacity=80);
  -moz-opacity:0.8;
  }
   
   
  </style>

 

<div class="main">
  <div class="container" id="idTransformView">
   
   
  <ul class="slider" id="idSlider">
   
  <li><a href=""><img src="http://rescdn.qqmail.com/dyimg/20120330/7014642654D5.jpg" /></a>111嗷嗷嗷嗷嗷嗷嗷嗷嗷嗷</li>
  <li><a href=""><img src="http://rescdn.qqmail.com/dyimg/20120330/77B454E7A235.jpg" /></a>222鹅鹅鹅饿鹅鹅鹅鹅鹅鹅饿</li>
  <li><a href=""><img src="http://rescdn.qqmail.com/dyimg/20120330/7640478553BB.jpg" /></a>333呵呵呵呵呵呵呵呵呵呵</li>
  <li><a href=""><img src="http://rescdn.qqmail.com/dyimg/20120330/729334C3EC1C.jpg" /></a>444啊啊啊啊啊啊啊啊啊</li>
  <li><a href=""><img src="http://rescdn.qqmail.com/dyimg/20120330/7DB324EF4FC5.jpg" /></a>555哦哦哦哦哦哦哦哦哦哦</li>
   
  </ul>
   
  <ul class="num" id="idNum">
  <li></li>
  <li></li>
   
  </ul>
   
  </div>
  </div>

 

<script type="text/javascript">
  var $$ = function (id) {
  return "string" == typeof id ? document.getElementById(id) : id;
  };
  var Class = {
  create: function() {
  return function() {
  this.initialize.apply(this, arguments);
  }
  }
  }
  Object.extend = function(destination, source) {
  for (var property in source) {
  destination[property] = source[property];
  }
  return destination;
  }
  var TransformView = Class.create();
  TransformView.prototype = {
  //容器对象,滑动对象,切换参数,切换数量
  initialize: function(container, slider, parameter, count, options) {
  if(parameter <= 0 || count <= 0) return;
  var oContainer = $$(container), oSlider = $$(slider), oThis = this;
  this.Index = 0;//当前索引
  this._timer = null;//定时器
  this._slider = oSlider;//滑动对象
  this._parameter = parameter;//切换参数
  this._count = count || 0;//切换数量
  this._target = 0;//目标参数
  this.SetOptions(options);
  this.Up = !!this.options.Up;
  this.Step = Math.abs(this.options.Step);
  this.Time = Math.abs(this.options.Time);
  this.Auto = !!this.options.Auto;
  this.Pause = Math.abs(this.options.Pause);
  this.onStart = this.options.onStart;
  this.onFinish = this.options.onFinish;
  oContainer.style.overflow = "hidden";
  oContainer.style.position = "relative";
  oSlider.style.position = "absolute";
  oSlider.style.top = oSlider.style.left = 0;
  },
  //设置默认属性
  SetOptions: function(options) {
  this.options = {//默认值
  Up: false,//是否向上(否则向左)
  Step: 10,//滑动变化率
  Time: 10,//滑动延时
  Auto: true,//是否自动转换
  Pause: 2000,//停顿时间(Auto为true时有效)
  onStart: function(){},//开始转换时执行
  onFinish: function(){}//完成转换时执行
  };
  Object.extend(this.options, options || {});
  },
  //开始切换设置
  Start: function() {
  if(this.Index < 0){
  this.Index = this._count - 1;
  } else if (this.Index >= this._count){ this.Index = 0; }
   
  this._target = -1 * this._parameter * this.Index;
  this.onStart();
  this.Move();
  },
  //移动
  Move: function() {
  clearTimeout(this._timer);
  var oThis = this, style = this.Up ? "top" : "left", iNow = parseInt(this._slider.style[style]) || 0, iStep = this.GetStep(this._target, iNow);
   
  if (iStep != 0) {
  this._slider.style[style] = (iNow + iStep) + "px";
  this._timer = setTimeout(function(){ oThis.Move(); }, this.Time);
  } else {
  this._slider.style[style] = this._target + "px";
  this.onFinish();
  if (this.Auto) { this._timer = setTimeout(function(){ oThis.Index++; oThis.Start(); }, this.Pause); }
  }
  },
  //获取步长
  GetStep: function(iTarget, iNow) {
  var iStep = (iTarget - iNow) / this.Step;
  if (iStep == 0) return 0;
  if (Math.abs(iStep) < 1) return (iStep > 0 ? 1 : -1);
  return iStep;
  },
  //停止
  Stop: function(iTarget, iNow) {
  clearTimeout(this._timer);
  this._slider.style[this.Up ? "top" : "left"] = this._target + "px";
  }
  };
  window.οnlοad=function(){
  this._pinNum = 5; //图数
  this._movNum = 300; //距离
  function Each(list, fun){
  for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); }
  };
  var objs = $$("idNum").getElementsByTagName("li");
   
  var tv = new TransformView("idTransformView", "idSlider",this._movNum,this._pinNum , {
  onStart : function(){ Each(objs, function(o, i){ o.className = tv.Index ? "on" : ""; }) }//按钮样式
  });
  tv.Start();
  Each(objs, function(o, i){
  o.onclick = function(){
  o.className = "on";
  tv.Auto = true;
  //tv.Index = i;
  if(i == 0){tv.Index -=1;}
  else if(i == 1){tv.Index += 1;}
  tv.Start();
  }
  o.onmouseout = function(){
  o.className = "";
  tv.Auto = true;
  tv.Start();
  }
  })
  }
  if (Object.prototype.toJSONString){
  var oldToJSONString = Object.toJSONString;
  Object.prototype.toJSONString = function(){
  if (arguments.length > 0){
  return false;
  }else{
  return oldToJSONString.apply(this, arguments);
  }
  }
  }
   
  </script>

 

num里的li本来是放数字的,我给改成左右箭头切换了,原来js是这样的

window.οnlοad=function(){
  this._pinNum = 5; //图数
  this._movNum = 126; //距离
  function Each(list, fun){
  for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); }
  };
  var objs = $("idNum").getElementsByTagName("li");
   
  var tv = new TransformView("idTransformView", "idSlider",this._movNum,this._pinNum , {
  onStart : function(){ Each(objs, function(o, i){ o.className = tv.Index == i ? "on" : ""; }) }//按钮样式
  });
  tv.Start();
  Each(objs, function(o, i){
  o.onmouseover = function(){
  o.className = "on";
  tv.Auto = true;
  tv.Index = i;
  tv.Start();
  }
  o.onmouseout = function(){
  o.className = "";
  tv.Auto = true;
  tv.Start();
  }
  })
 

因为我要放在wap上运行,所以onmouseover有点不好控制,给改成onclick了

转载于:https://www.cnblogs.com/sephy/archive/2012/04/19/2456980.html

THE END
< <上一篇
下一篇>>