网站首页 手机版
 注册 登录
您现在的位置: 畅无忧设计 >> 网页特效 >> 背景图像 >> 正文
最新文章
· 带文字说明的js幻灯片代码
· 浏览器全屏浏览图片集
· 创意中国flash+xml焦点图代码
· 仿QQ商城焦点图jquery幻灯特效
· 带缓冲效果的图片幻灯片
· css和jquery配合完成-ipad向左向右拖
· 图片自动按比例缩小代码(防止页面被
· 仿QQ新闻图片浏览效果
· 一个横向滑动的图片切换容器代码
· 鼠标移入/移出改变图片透明度
热门文章
 图片上的左右箭头切换上一张下一张
 带缩略图和左右箭头自动切换的图片
 产品展示专用的jQuery图片幻灯+缩略
 Flash+XML前后按钮的超漂亮图片切换
 图片左右滚动,带有左右方向控制
 Jquery幻灯片/焦点图插件KinSlides
 JS 图片左右滚动,图片控制左右滚动
 可控制左右滚动的无缝图片滚动特效
 可控制图片放大缩小还原移动效果的
 非常漂亮的JS带缩略图的幻灯图片切
相关文章
仿QQ商城焦点图jquery幻灯特效
仿腾讯网可控制左右平滑滚动的图片切换效
仿大麦网的焦点图切换效果
Flash+XML前后按钮超酷焦点图
jQuery scrollGallery 图片浏览器(支持左
Jquery幻灯片/焦点图插件KinSlideshow
简单实用的焦点图特效
淘宝男人画报焦点图代码
原生JS面向对象的带左右滚动的Js焦点图
来源:源码爱好者 更新时间:2012/2/19 1:08:42 阅读次数: 我要投稿
△运行 ☉预览 #复制 +收藏
特效代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>焦点图 - 左右滚动</title>
<style type="text/css">
* { padding: 0; margin: 0; }
li { list-style: none; }
img { border: none; }
body { background: #ecfaff; }
.box { width: 470px; height: 150px; overflow: hidden; position: relative; margin: 150px auto 0; background: #ccc; }
.box ol { position: absolute; left: 200px; bottom: 5px; z-index: 2; }
.box ol li { float: left; margin-right: 3px; display: inline; cursor: pointer; background: #fcf2cf; border: 1px solid #f47500; padding: 2px 6px; color: #d94b01; font-family: arial; font-size: 12px; }
.box .active { padding: 3px 8px; font-weight: bold; color: #ffffff; background: #ffb442; position: relative; bottom: 2px; }
.box ul { position: absolute; top: 0; left: 0; z-index: 1; }
.box ul li { width: 470px; height: 150px; float: left; }
.box ul img { float: left; width: 470px; height: 150px; }
.box p { width: 20px; height: 20px; line-height: 20px; font-family: arial; color: #fff; text-align: center; font-weight: bold; background: #333; border: 1px solid #ccc; position: absolute; top: 60px; z-index: 2; cursor: pointer; }
.box .prev { left: 10px; }
.box .next { right: 10px; }
</style>
</head>
<body>
<div class="box" id="slider">
 <ul>
  <li><a href="javascript: void(0);"><img src="http://www.cwydesign.com/effects/UploadFiles_7074/201008/2010081122582652.jpg" alt="广告一" /></a></li>
  <li><a href="javascript: void(0);"><img src="http://www.cwydesign.com/effects/UploadFiles_7074/201008/2010081122582644.jpg" alt="广告二" /></a></li>
  <li><a href="javascript: void(0);"><img src="http://www.cwydesign.com/effects/UploadFiles_7074/201008/2010081122582622.jpg" alt="广告三" /></a></li>
  <li><a href="javascript: void(0);"><img src="http://www.cwydesign.com/effects/UploadFiles_7074/201008/2010081122582661.jpg" alt="广告四" /></a></li>
  <li><a href="javascript: void(0);"><img src="http://www.cwydesign.com/effects/UploadFiles_7074/201009/2010091011353879.jpg" alt="广告五" /></a></li>
 </ul>
</div>
<script type="text/javascript">
var Effect = (function() {
 
 var Slider = function(o) {
  this.setting      = typeof o === 'object' ? o : {};
  this.target       = this.setting.target || 'slider';
  this.showMarkers  = this.setting.showMarkers || false;
  this.showControls = this.setting.showControls || false;
  this.timer        = null;
  this.currentTime  = null;
  this.ms           = 35;
  this.autoMs       = 3000;
  this.iTarget      = 0;
  this.nextTarget   = 0;
  this.speed        = 0;
  
  this.init();
  this.handleEvent();
 };
 
 Slider.prototype = {
  init: function() {
   this.obj      = document.getElementById(this.target);
   this.oUl      = this.obj.getElementsByTagName('ul')[0];
   this.aUlLis   = this.oUl.getElementsByTagName('li');
   this.width    = this.aUlLis[0].offsetWidth;
   this.number   = this.aUlLis.length;
   
   this.oUl.style.width = this.width * this.number + 'px';
   
   if(this.showMarkers) {
    var oDiv = document.createElement('div');
    var aLis = [];
    for(var i = 0; i < this.number; i++) {
     aLis.push('<li>'+ (i+1) +'<\/li>');
    };
    oDiv.innerHTML = '<ol>'+ aLis.join('') +'<\/ol>';
    this.obj.appendChild(oDiv.firstChild);
    this.aLis = this.obj.getElementsByTagName('ol')[0].getElementsByTagName('li');
    this.aLis[0].className = 'active';
    oDiv = null;
   };
   
   if(this.showControls) {
    this.oPrev = document.createElement('p');
    this.oNext = document.createElement('p');
    this.oPrev.className = 'prev';
    this.oPrev.innerHTML = '«';
    this.oNext.className = 'next';
    this.oNext.innerHTML = '»';
    this.obj.appendChild(this.oPrev);
    this.obj.appendChild(this.oNext);
    
   };
   
  },
  
  handleEvent: function() {
   var that = this;
   
   this.currentTime = setInterval(function() {
    that.autoPlay();
   }, this.autoMs);
   
   this.addEvent(this.obj, 'mouseover', function() {
    clearInterval(that.currentTime);
   });
   
   this.addEvent(this.obj, 'mouseout', function() {
    that.currentTime = setInterval(function() {
     that.autoPlay();
    }, that.autoMs);
   });
   
   if(this.showMarkers) {
    for(var i = 0; i < this.number; i++) {
     var el = this.aLis[i];
     (function(index) {
      that.addEvent(el, 'mouseover', function() {
       that.goTime(index);
      });
     })(i);
    };
   };
   
   if(this.showControls) {
    this.addEvent(this.oPrev, 'click', function() {
     that.fnPrev();
    });
    this.addEvent(this.oNext, 'click', function() {
     that.autoPlay();
    });
   };
   
  },
  
  addEvent: function(el, type, fn) {
   if(window.addEventListener) {
    el.addEventListener(type, fn, false);
   }
   else if(window.attachEvent) {
    el.attachEvent('on' + type, fn);
   };
  },
  
  fnPrev: function() {
   this.nextTarget--;
   if(this.nextTarget < 0) {
    this.nextTarget = this.number - 1;
   };
   this.goTime(this.nextTarget);
  },
  
  autoPlay: function() {
   this.nextTarget++;
   if(this.nextTarget >= this.number) {
    this.nextTarget = 0;
   };
   this.goTime(this.nextTarget);
  },
  
  goTime: function(index) {
   var that = this;
   
   if(this.showMarkers) {
    for(var i = 0; i < this.number; i++) {
     i == index ? this.aLis[i].className = 'active' : this.aLis[i].className = '';
    };
   };
   
   this.iTarget = -index * this.width;
   if(this.timer) {
    clearInterval(this.timer);
   };
   this.timer = setInterval(function() {
    that.doMove(that.iTarget);
   }, this.ms);
  },
  
  doMove: function(target) {
   this.oUl.style.left = this.speed + 'px';
   this.speed += (target - this.oUl.offsetLeft) / 3;
   if(Math.abs(target - this.oUl.offsetLeft) === 0) {
    this.oUl.style.left = target + 'px';
    clearInterval(this.timer);
    this.timer = null;
   };
  }
 };
 
 return {
  
  slider: function(o) {
   var tt = new Slider(o);
  }
 };
})();
Effect.slider({
 'targetElement': 'slider',
 'showMarkers': true,
 'showControls': true
});
</script>
</body>
</html>
△运行 ☉预览 #复制 +收藏
特效说明:

  一个基于JS来实现的焦点图,原生JS面向对象的思想,左右滚动的焦点图,经过修改,能在主流浏览器下(包括IE6-9、chrome、firefox)正常的运行,通过对本焦点图的编写,主要学习javascript的面向对象机制,与常用效果的封装,还有就是对函数传入object的方法,对this对象的理解。

  • 上一篇文章:
  • 下一篇文章:
  • 关于我们 - 联系我们 - 广告服务 - 在线投稿 - 友情链接 - 网站地图 - 版权声明
    CopyRight 2008-2010, CWYDESIGN.COM - 畅无忧设计, Inc. All Rights Reserved
    滇ICP备09005765号