原文:超酷的jQuery百叶窗图片滑块实现教程

今天我们要来分享一款基于jQuery的百叶窗焦点图插件,也可以说是图片滑块插件。这种jQuery焦点图插件的应用非常广泛,在早些年前,我们需要用flash来完成这种百叶窗的效果。如今我们可以用jQuery来实现这个动画效果。这款jQuery百叶窗焦点图不仅可以横向切换,也可以垂直切换,效果都非常不错。

你也可以在这里查看在线演示

下面我们来简单解说一下实现这款jQuery百叶窗焦点图的过程和代码,代码主要由HTML、CSS以及jQuery组成,实现比较简单。

HTML代码:

<div id="slider">
<img src="data:images/1.jpg" alt="网页素材大全1" title="网页素材大全" />
<img src="data:images/2.jpg" alt="网页素材大全2" title="网页素材大全" />
<img src="data:images/3.jpg" alt="网页素材大全3" title="网页素材大全" />
</div>

HTML代码非常简单,一个div中列出了3张图片,这3张图片到时候我们可以制作成百叶窗的切换效果。

CSS代码:

#slider {position: relative;width: 600px;overflow: hidden;margin: 10px auto 30px auto;
}#slider li {position: absolute;top: 0;left: 0;
}.caption {opacity: 0.8;background: #000;height: 33px;padding: 5px 0 0 0;color: #fff;text-align: center;font: 25px/1 '微软雅黑';z-index: 200;
}.prev-link, .next-link {display: block;width: 24px;height: 24px;background-repeat: no-repeat;background-position: left top;position: absolute;bottom: 10px;z-index: 300;
}.prev-link {left: 10px;background-image: url(prev.png );
}.next-link {left: 40px;background-image: url(next.png );
}.circle {display: block;width: 16px;height: 16px;background: url(circle-empty.png ) no-repeat left top;position: absolute;bottom: 10px;z-index: 300;
}.circle-current {background-image: url(circle-full.png );
}

CSS代码也非常简单,设置背景的同时也设置了左右按钮箭头和切换图片的小圆点,只是利用了几张背景图片,并没有用复杂的CSS代码。

最后的jQuery代码才是关键,这才是实现百叶窗效果的核心代码。

jQuery代码:

(function(a) { (function() {var b = false;var c = (/xyz/.test(function() {xyz})) ? (/\b_super\b/) : (/.*/);this.Class = function() {};Class.extend = function(h) {var g = this.prototype;b = true;var f = new this();b = false;for (var e in h) {if (typeof h[e] == "function" && typeof g[e] == "function" && c.test(h[e])) {f[e] = (function(i, j) {return function() {var l = this._super;this._super = g[i];var k = j.apply(this, arguments);this._super = l;return k}})(e, h[e])} else {f[e] = h[e]}}function d() {if (!b && this.init) {this.init.apply(this, arguments)}}d.prototype = f;d.constructor = d;d.extend = arguments.callee;return d}})();a.fn.lateralSlider = function(b) {var d = {displayDuration: 2000,animateDuration: 1500,numColumns: 10,transitions: "fade,slideUp,slideDown,slideLeft,slideRight,slideUpAndDown,slideLeftAndRight,fadeAndSlideUp,fadeAndSlideDown,fadeAndSlideLeft,fadeAndSlideRight,fadeSlideUpAndRight,fadeSlideDownAndLeft",random: false,hidePrevAndNextArrows: false,hideSlideChooser: false,captionOpacity: 0.8};var c = a.extend({},d, b);this.each(function() {var j = a(this);var t = Class.extend({$imgs: null,size: null,displayImg: null,nextImg: null,numDivs: null,divWidth: null,baseCSS: null,$divs: null,transitions: [],transition: null,transitionCount: null,interval: null,width: null,init: function() {this.$imgs = a("img", j);this.size = this.$imgs.size();this.$imgs.hide();this.nextImg = 0;this.width = j.width();this.numDivs = c.numColumns;this.divWidth = this.width / this.numDivs;this.baseCSS = {width: this.divWidth,position: "absolute",top: 0,backgroundRepeat: "no-repeat"};this.createDivs();this.$divs = a("div", j);this.transitionCount = -1},createDivs: function() {for (var A = 0; A < this.numDivs; A++) {var B = a("<div></div>");B.css(this.baseCSS);B.css("left", this.divWidth * A);B.appendTo(j)}}});var y = new t();var g = Class.extend({baseDuration: null,originalOffset: null,offset: null,init: function() {this.baseDuration = c.animateDuration / 8;this.originalOffset = 7 * c.animateDuration / (8 * y.numDivs);this.offset = 7 * c.animateDuration / (8 * y.numDivs)},duration: function() {return this.baseDuration + this.offset},increment: function() {this.offset += this.originalOffset},reset: function() {this.offset = this.originalOffset},getCSS: function(A) {return {}},eachDiv: function() {return {}},applyTransition: function() {y.$divs.each(this.eachDiv);this.reset()}});var v = g.extend({applyTransition: function() {var A = this;y.$divs.each(function() {var B = A.eachDiv;if (typeof(A.eachDiv) == "function") {B = B()}a(this).animate(B, A.duration());A.increment()});this.reset()}});var m = v.extend({getCSSIndex: null,eachDivIndex: null,getCSSGroup: null,eachDivGroup: null,init: function() {this._super();this.getCSSGroup = new Array();this.eachDivGroup = new Array();this.getCSSIndex = 0;this.eachDivIndex = 0},getCSS: function(B) {var A = this.getCSSGroup[this.getCSSIndex];this.getCSSIndex = (this.getCSSIndex + 1) % this.getCSSGroup.length;return A(B)},addTransition: function(A) {this.getCSSGroup.push(A.getCSS);this.eachDivGroup.push(A.eachDiv)},applyTransition: function() {var A = this;y.$divs.each(function() {var B = A.eachDivGroup[A.eachDivIndex];if (typeof(B) == "function") {B = B()}a(this).animate(B, A.duration());A.eachDivIndex = (A.eachDivIndex + 1) % A.eachDivGroup.length;A.increment()});this.reset()}});var u = v.extend({getCSS: function(A) {return {opacity: 0}},eachDiv: {opacity: 1}});var f = v.extend({getCSS: function(A) {return {top: y.$imgs.eq(y.nextImg).height()}},eachDiv: {top: 0}});var h = v.extend({getCSS: function(A) {return {height: 0}},eachDiv: function() {return {height: y.$imgs.eq(y.nextImg).height()}}});var r = v.extend({getCSS: function(B) {var A = B.css("left");A = parseInt(A.substring(0, A.length - 2), 10);return {left: A + y.divWidth,width: 0}},eachDiv: {left: "-=" + y.divWidth,width: y.divWidth}});var q = v.extend({getCSS: function(A) {return {width: 0}},eachDiv: {width: y.divWidth}});var o = m.extend({addTransitions: function(A, B) {this.addTransition(A);this.addTransition(B)}});var w = m.extend({addTransitions: function(B, A) {this.addTransition(B);this.addTransition(A)}});var k = m.extend({addTransitions: function(A, B) {this.addTransition(A);this.addTransition(B)}});var n = m.extend({addTransitions: function(A, B) {this.addTransition(A);this.addTransition(B)}});var p = m.extend({addTransitions: function(A, B) {this.addTransition(A);this.addTransition(B)}});var e = m.extend({addTransitions: function(A, B) {this.addTransition(A);this.addTransition(B)}});var x = m.extend({addTransitions: function(A, C, B) {this.addTransition(A);this.addTransition(C);this.addTransition(B)}});var s = m.extend({addTransitions: function(C, A, B) {this.addTransition(C);this.addTransition(A);this.addTransition(B)}});var z = {fade: new u(),slideUp: new f(),slideDown: new h(),slideLeft: new r(),slideRight: new q(),slideUpAndDown: new o(),slideLeftAndRight: new w(),fadeAndSlideUp: new k(),fadeAndSlideDown: new n(),fadeAndSlideLeft: new p(),fadeAndSlideRight: new e(),fadeSlideUpAndRight: new x(),fadeSlideDownAndLeft: new s()};z.slideUpAndDown.addTransitions(z.slideUp, z.slideDown);z.slideLeftAndRight.addTransitions(z.slideLeft, z.slideRight);z.fadeAndSlideUp.addTransitions(z.slideUp, z.fade);z.fadeAndSlideDown.addTransitions(z.fade, z.slideDown);z.fadeAndSlideLeft.addTransitions(z.fade, z.slideLeft);z.fadeAndSlideRight.addTransitions(z.slideRight, z.fade);z.fadeSlideUpAndRight.addTransitions(z.slideUp, z.fade, z.slideRight);z.fadeSlideDownAndLeft.addTransitions(z.slideDown, z.fade, z.slideLeft);t.prototype.populateTransitions = function() {var B = c.transitions.split(/,\s*/g);for (var A in B) {this.transitions.push(z[B[A]])}};t.prototype.getTransition = function() {if (c.random) {var A = Math.floor(Math.random() * this.transitions.length);return this.transitions[A]} else {this.transitionCount = (this.transitionCount + 1) % this.transitions.length;return this.transitions[this.transitionCount]}};t.prototype.addDivCSS = function() {var B = this;var C = B.$imgs.eq(B.nextImg);var D = "url(" + C.attr("src") + ")";var A = C.height();this.$divs.each(function() {var E = a(this);E.css({backgroundImage: D,backgroundPosition: "-" + E.css("left") + " 0px",height: A});E.css(B.transition.getCSS(E))})};t.prototype.process = function() {j.css({backgroundImage: "url(" + this.$imgs.eq(this.displayImg).attr("src") + ")",backgroundRepeat: "no-repeat"});this.transition = this.getTransition();this.addDivCSS();this.transition.applyTransition();j.animate({height: this.$imgs.eq(this.nextImg).height()},c.animateDuration);this.advanceShow()};t.prototype.updateCurrent = function() {a('.circle[rel="' + this.displayImg + '"]').removeClass("circle-current");a('.circle[rel="' + this.nextImg + '"]').addClass("circle-current")};t.prototype.advanceShow = function() {this.updateCurrent();this.displayImg = this.nextImg;if (this.nextImg == this.size - 1) {this.nextImg = 0} else {this.nextImg++}};t.prototype.startShow = function() {this.interval = window.setInterval(a.proxy(this.runner, this), c.displayDuration + c.animateDuration)};t.prototype.stopShow = function() {window.clearInterval(this.interval)};t.prototype.goToSlide = function(A) {if (this.$divs.filter(":animated").size() > 0) {return}this.stopShow();this.nextImg = A;this.updateCurrent();this.runner();if (this.nextImg == 0) {this.displayImg = this.size - 1} else {this.displayImg = this.nextImg - 1}this.startShow()};t.prototype.applyLink = function() {var C = this.$imgs.eq(this.displayImg);var B = C.parent();if (B.is("a")) {B.removeAttr("style")}var A = this.$imgs.eq(this.nextImg);var D = A.parent();if (D.is("a")) {D.css({display: "block",textDecoration: "none",border: "0",width: j.width(),height: A.height(),position: "absolute",top: 0,left: 0,zIndex: 100})}};t.prototype.applyCaption = function() {var A = this.$imgs.eq(this.nextImg);var C = A.attr("title");var D = a(".caption", j);D.slideUp(function() {a(this).html(C)});if (C != "") {if (D.size() > 0) {if (!D.is(":visible")) {D.html(C)}D.slideDown()} else {var B = a('<div><span>' + C + "</span></div>");B.css({opacity: c.captionOpacity,width: j.width(),position: "absolute",top: 0,left: 0,display: "none"});B.appendTo(j);B.slideDown()}}};t.prototype.runner = function() {this.applyLink();this.applyCaption();this.process()};t.prototype.begin = function() {var A = this.$imgs.eq(this.nextImg);j.css({backgroundImage: "url(" + A.attr("src") + ")",height: A.height()});this.runner();this.transitionCount--;this.startShow()};var i = Class.extend({circleCount: null,init: function() {this.circleCount = 0},addAll: function() {this.addCircles();this.addPrevAndNextLinks();a("a.circle").click(this.circleClickHandler);a(".prev-link").click(this.prevLinkHandler);a(".next-link").click(this.nextLinkHandler);if (c.hideSlideChooser) {a("a.circle").hide()}if (c.hidePrevAndNextArrows) {a(".prev-link, .next-link").hide()}},addCircles: function() {var A = this;y.$imgs.each(function() {var B = a('<a href="#" rel="' + A.circleCount + '"></a>');B.css({right: (y.size - A.circleCount - 1) * 20 + 10});B.appendTo(j);A.circleCount++})},addPrevAndNextLinks: function() {a('<a href="#"></a>').appendTo(j);a('<a href="#"></a>').appendTo(j)},circleClickHandler: function(B) {var A = parseInt(a(this).attr("rel"), 10);y.goToSlide(A);B.preventDefault()},prevLinkHandler: function(B) {var A = y.displayImg - 1;if (A < 0) {A = y.size - 1}y.goToSlide(A);B.preventDefault()},nextLinkHandler: function(B) {var A = y.displayImg + 1;if (A >= y.size) {A = 0}y.goToSlide(A);B.preventDefault()}});var l = new i();l.addAll();y.populateTransitions();y.begin()});return this}
})(jQuery);

这已经封装成一个jQuery插件,我们只需简单地调用即可。以上就是这款jQuery百叶窗焦点图的全部代码,你也可以下载源代码来研究,还算简单的。源代码下载>>

超酷的jQuery百叶窗图片滑块实现教程相关推荐

  1. 炫酷的jQuery手风琴图片和菜单插件及源码

    手风琴效果的应用非常广泛,我们常见的有手风琴图片切换和手风琴菜单,同时它也是焦点图的一种展现形式之一.今天我们就来分享一些基于jQuery的手风琴图片和菜单插件,并提供源代码下载,一起来看看吧. 1. ...

  2. html5圆形图片轮播,jQuery超酷响应式圆形图片轮播图特效

    mislider是一款效果非常酷的jQuery响应式圆形图片轮播图特效插件.该轮播图特效可以将图片以圆形图片显示,然后使图片无限循环形成轮播图或旋转木马特效.该轮播图插件的特点有: 使用简单 在同一个 ...

  3. HTML圆形立体感轮播图,jQuery超酷响应式圆形图片轮播图特效

    mislider是一款效果非常酷的jQuery响应式圆形图片轮播图特效插件.该轮播图特效可以将图片以圆形图片显示,然后使图片无限循环形成轮播图或旋转木马特效.该轮播图插件的特点有: 使用简单 在同一个 ...

  4. 8款超酷的HTML5 3D图片动画源码

    1.HTML5移动端图片左右切换动画 今天要给大家分享一款很不错的图片左右切换焦点图动画,并且支持移动端触摸滑动.功能上,这款HTML5图片播放器支持鼠标滑动.手机端触摸滑动以及自动播放.外观上,这款 ...

  5. 40个超酷的jQuery动画教程

    原文地址:http://www.goodfav.com/40-cool-jquery-animation-tutorials-1189.html 由于它的到来,已经引起了jQuery的网络风暴,现在是 ...

  6. 超酷的框架JS图片处理效果

    Lightbox JS v2.0 Lightbox JS 是一个简单而又谦恭的用来把图片覆盖在当前页面上的脚本. 它能被快速安装并且运作于所有流行的浏览器. 最新更新 Version 2.0 * 图片 ...

  7. 超酷!纯CSS3烧烤动画实现教程

    今天在老外的网站上看到一款很有创意的纯CSS3动画,是模拟烧烤活动的.款动画模拟了一个烧烤架,烧烤架上的食物也都是用纯CSS3绘制而成,没有用一张图片,效果相当逼真.另外一个有意思的是,这个CSS3烧 ...

  8. 10个超赞的jQuery图片滑块动画

    在前端开发过程中,图片特效都十分绚丽,比如抢红包特效,时间轴等,接下来分享10款效果惊艳的HTML5图片特效分享给大家. 1.HTML5 3D正方体旋转动画 很酷的3D特效 之前我们分享过很多非常不错 ...

  9. 超酷实用的jQuery焦点图赏析及源码

    超酷实用的jQuery焦点图赏析及源码 焦点图应用在现代网页中使用十分广泛,有注重简单小巧的,也有注重华丽美观的,大部分jQuery焦点图都可以滑动和切换图片,并且在切换图片时产生不同的动画特效.今天 ...

  10. 炫酷实用 7款jQuery/HTML5图片应用

    2019独角兽企业重金招聘Python工程师标准>>> jQuery非常强大,我们这里有很多关于jQuery焦点图的插件,今天我们精选了7款利用jQuery和HTML5实现的超炫酷图 ...

最新文章

  1. Bqq服务器的缓存文件放什么目录,如何使文件系统缓存失效? - How to invalidate the file system cache? - 开发者知识库...
  2. dapper 注意事项之GUID
  3. STM32 DMA正常模式等待传输完成和开始下一次传输
  4. 28款网页CSS设计工具和生成器
  5. WPF--动态添加控件、访问控件
  6. 如何修改matplotlib的图例的标题的字体大小
  7. solr 6.5.1 创建core失败的原因 Can‘t find resource ‘solrconfig.xml‘
  8. android 绘制控件,Android自定义控件绘制基本图形基础入门
  9. Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4
  10. 联想小新air13装双系统_联想小新 Air 13IBK Pro 安装黑苹果Windows双系统教程
  11. 如何在markdown中打出上标、下标和一些特殊符号 from jianshuer 这是朕的江山
  12. android培训课程!不同层级的Android开发者的不同行为,成功入职阿里
  13. 杰理之AUX/LINEIN 设计注意【篇】
  14. CSS 如何实现羽化效果?
  15. seata神坑,enableAutoDataSourceProxy无法关闭
  16. Python序列类型及操作
  17. 小空同学的第一次文学尝试
  18. 诊断CAPL自动化(8)——封装的读取/检查DTC函数库,覆盖了所有的测试场景
  19. Python识别验证码----网易易盾推理拼图
  20. 2020年中国即时配送行业现状与竞争格局分析,自动化配送或许是未来即时配送的主要方式「图」

热门文章

  1. Oracle使用技巧及PL/SQL Developer配置
  2. 西安电子科技大学计算机科学与技术就业,西安电子科技大学:除了计算机和通信工程,这些专业高考也很热门,毕业照样拿高薪...
  3. 魔域私服怎么老服务器中断,魔域私服技术文章-服务器端比较正确的数据库解释文件...
  4. java sql注入 过滤器_java 过滤器filter防sql注入 | 学步园
  5. java格式化word文档_Java如何格式化word文档中的文本?
  6. SimpleFs文件系统初步一(编译并挂载)
  7. 海康ps流转换h264流
  8. LIVE555play流程
  9. 寻找大富翁(堆排序)
  10. mfsort shell语法_8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下...