原生js制作焦点图滑动切换特效



39 155 52



特效描述:原生js制作 焦点图 切换特效,原生js制作焦点图滑动切换特效

代码结构

1. HTML代码

<div style="background:#FFF; padding:50px;">
<!--效果开始-->
<div class="column1_left">
  <div class="container" id="idTransformView2">
    <ul class="slider slider2" id="idSlider2">
      <li><a href=""><img src="images/0721js001.jpg"/></a>
      <div class="idSiideer_pos">女星露背大比拼 谁是你心中的“美背女神”</div>
      <div class="idSiideer_pos2"></div>
      </li>
      <li><a href=""><img src="images/0721js002.jpg"/></a>
      <div class="idSiideer_pos">如此惊艳的造型,让人不禁感叹</div>
      <div class="idSiideer_pos2"></div>
      </li>
      <li><a href=""><img src="images/0721js003.jpg"/></a>
      <div class="idSiideer_pos">林志玲身穿前短后长的银色亮片裙亮相</div>
      <div class="idSiideer_pos2"></div>
      </li>
      <li><a href=""><img src="images/0721js004.jpg"/></a>
      <div class="idSiideer_pos">女星露背大比拼 谁是你心中的“美背女神”</div>
      <div class="idSiideer_pos2"></div>
      </li>
      <li><a href=""><img src="images/0721js005.jpg"/></a>
      <div class="idSiideer_pos">如此惊艳的造型,让人不禁感叹</div>
      <div class="idSiideer_pos2"></div>
      </li>
      <li><a href=""><img src="images/0721js006.jpg"/></a>
      <div class="idSiideer_pos">林志玲身穿前短后长的银色亮片裙亮相</div>
      <div class="idSiideer_pos2"></div>
      </li>
    </ul>
    <ul class="num" id="idNum2">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
   </div>
</div>
<script type="text/javascript">
//计算idslider2的宽度开始
var kuan1=0;
var kuand=document.getElementById('idSlider2')
var kuan=document.getElementById('idSlider2').getElementsByTagName("li");
var tpz=kuan.length;//图片总个数
for(var i=0; i<kuan.length; i++){
	kuan1+=321;
	}
kuand.style.width=kuan1+'px';
//计算结束
var keVar = 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 = keVar(container), oSlider = keVar(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:			true,//是否向上(否则向左)
		Step:		5,//滑动变化率
		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.onload=function(){
	function Each(list, fun){
		for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); }
	};
	var objs2 = keVar("idNum2").getElementsByTagName("li");
	var tv2 = new TransformView("idTransformView2", "idSlider2", 321, tpz, {	
		onStart: function(){ Each(objs2, function(o, i){ o.className = tv2.Index == i ? "on" : ""; }) },//按钮样式
		Up: false
	});//6是轮播总数
	tv2.Start();
	Each(objs2, function(o, i){
		o.onmouseover = function(){
			o.className = "on";
			tv2.Auto = false;
			tv2.Index = i;
			tv2.Start();
		}
		o.onmouseout = function(){
			o.className = "";
			tv2.Auto = true;
			tv2.Start();
		}
	})
}
</script>
<!--End-->
</div>
<div style="text-align:center;margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';">
</div>



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册


热门标签: 图片叠加 图片层叠 图片翻转 图片旋转 图片延迟加载 图片延迟 图片加载 图片拖动 图片拖拽 图片淡出淡进 图片淡出 图片淡进 图片全屏 头像上传 图片上传 二维码 图片放大镜 h5图片动画 h5图标动画 html5图片动画 html5图标动画 带缩略图的幻灯片 地图 中国地图 世界地图 flash焦点图 flash幻灯片 flashbanner flash图片轮播 图片放大缩小 图片缩放 图片大小 图片放大 图片缩小 图片变大 图片变小 滚动切换 滚动条切换 滑动选项卡 滑动切换 图片广告 图片收缩展开 图片收缩 图片展开 纯图片轮播 图片轮播 图片滚动 图片滚动条 图片滑动 图片滑块 旋转木马 图片旋转木马 文字旋转木马 旋转木马插件 图片切换 图片选项卡 图标选项卡 图标导航 图标菜单 自动滚动图片轮播 滑动手风琴 背景切换 大图切换 选项卡切换 选项卡 切换 tab切换 页面切换 选项卡插件 切换插件 手风琴 水平手风琴 垂直手风琴 图片手风琴 文字手风琴 手风琴插件 图表 焦点图 幻灯片 轮播图 bar焦点图 图片 图片插件 头像截图 带标题的焦点图 图片切换 图片选项卡 图标选项卡 纯图片轮播 图片轮播 图片切换 切换图片

×
×

注册

官方QQ群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到