首页 > 技术文章 > 一个酷炫的,基于HTML5,Jquery和Css的全屏焦点图特效,兼容各种浏览器

manongxiaobing 2015-03-21 14:44 原文

 基于HTML5和CSS的焦点图特效,梅花图案的背景很有中国特色,而且还会动哦,效果超炫,推荐下载!

演示图

一个酷炫的,基于HTML5和Css的焦点图特效,兼容各种浏览器

html代码

 

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 5 <meta name="keywords" content="一个酷炫的,基于HTML5和Css的焦点图特效,兼容各种浏览器" />
 6 <meta name="description" content="一个酷炫的,基于HTML5和Css的焦点图特效,兼容各种浏览器" />
 7 <title>一个酷炫的,基于HTML5和Css的焦点图特效,兼容各种浏览器</title>
 8 <link href="css/slider.css" rel="stylesheet" type="text/css" />
 9 <!--[if lt IE 9]><script src="js/html5.js"></script><![endif]-->
10 <!--[if IE 6]> 
11 <script type="text/javascript" src="js/DD_belatedPNG.js"></script> 
12 <script>DD_belatedPNG.fix('*');</script> 
13 <![endif]-->
14 <script type='text/javascript' src='js/jquery-1.7.2.min.js'></script>
15 <script type='text/javascript' src='js/common.js'></script>
16 <script type='text/javascript' src='js/slider.js'></script>
17 </head>
18 <body>
19 <header>
20   <div class="header-content home">
21     <div class="parallax-bg" id="slider-wrap">
22       <div class="slider parallax-bg" id="slider">
23         <div class="slider-sections sandbox">
24           <section class="first"> <img alt="Kendo UI" src="images/home-banner-1.png"/>
25             <div class="text">
26               <h2>SmartSite Ver 2.2<br />
27                 智能网站管理系统 </h2>
28               <p class="copy">采用前后台完全分离技术,通过标签(支持标签循环嵌套、判断标签、自定义标签、文件循环嵌套等)加模板技术.全站生成纯静态页。</p>
29               <p class="button"><a href="http://www.cnblogs.com/">Download</a> <a class="dimmed" href="http://www.cnblogs.com/">Learn More</a></p>
30             </div>
31           </section>
32           <section> <img src="images/dataviz-home-image-q2.png" alt="Kendo UI" />
33             <div class="text" style="padding-top: 10px;">
34               <h2>企业网站管理系统</h2>
35               <p class="copy">单页面、单页面索引、新闻、产品展示、下载、友情链接、网上商城,在线支付、配送、支付方式管理、广告等模块。</p>
36               <p class="button"><a href="http://www.cnblogs.com/">Download</a> <a class="dimmed" href="http://www.cnblogs.com/">Learn More</a></p>
37             </div>
38           </section>
39           <section> <img src="images/home_banner_web-q2.png" alt="Kendo UI" />
40             <div class="text">
41               <h2>智能移动网站管理系统</h2>
42               <p class="copy">基于jquery.Mobile、HTML5技术框架,前后台完全分离,采用标签加模板技术,全站生成纯静态页。</p>
43               <p class="button"><a href="http://www.cnblogs.com/" >Download</a> <a class="dimmed" href="http://www.cnblogs.com/">Learn More</a></p>
44             </div>
45           </section>
46         </div>
47       </div>
48       <a class="slider-prev" href="javascript: void(0)">&lt;</a> <a class="slider-next" href="javascript: void(0)">&gt;</a> </div>
49   </div>
50 </header>
51 </body>
52 </html>

 JS代码

 
  1 /**
  2 * @author Alexander Farkas
  3 * v. 1.22
  4 */
  5 (function ($)
  6 {
  7     if (!document.defaultView || !document.defaultView.getComputedStyle)
  8     { // IE6-IE8
  9         var oldCurCSS = $.curCSS;
 10         $.curCSS = function (elem, name, force)
 11         {
 12             if (name === 'background-position')
 13             {
 14                 name = 'backgroundPosition';
 15             }
 16             if (name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[name])
 17             {
 18                 return oldCurCSS.apply(this, arguments);
 19             }
 20             var style = elem.style;
 21             if (!force && style && style[name])
 22             {
 23                 return style[name];
 24             }
 25             return oldCurCSS(elem, 'backgroundPositionX', force) + ' ' + oldCurCSS(elem, 'backgroundPositionY', force);
 26         };
 27     }
 28 
 29     var oldAnim = $.fn.animate;
 30     $.fn.animate = function (prop)
 31     {
 32         if ('background-position' in prop)
 33         {
 34             prop.backgroundPosition = prop['background-position'];
 35             delete prop['background-position'];
 36         }
 37         if ('backgroundPosition' in prop)
 38         {
 39             prop.backgroundPosition = '(' + prop.backgroundPosition;
 40         }
 41         return oldAnim.apply(this, arguments);
 42     };
 43 
 44     function toArray(strg)
 45     {
 46         strg = strg.replace(/left|top/g, '0px');
 47         strg = strg.replace(/right|bottom/g, '100%');
 48         strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g, "$1px$2");
 49         var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
 50         return [parseFloat(res[1], 10), res[2], parseFloat(res[3], 10), res[3]];
 51     }
 52 
 53     $.fx.step.backgroundPosition = function (fx)
 54     {
 55         if (!fx.bgPosReady)
 56         {
 57             var start = $.curCSS(fx.elem, 'backgroundPosition');
 58             if (!start)
 59             {//FF2 no inline-style fallback
 60                 start = '0px 0px';
 61             }
 62 
 63             start = toArray(start);
 64             fx.start = [start[0], start[2]];
 65             var end = toArray(fx.end);
 66             fx.end = [end[0], end[2]];
 67 
 68             fx.unit = [end[1], end[3]];
 69             fx.bgPosReady = true;
 70         }
 71         //return;
 72         var nowPosX = [];
 73         nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
 74         nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
 75         fx.elem.style.backgroundPosition = nowPosX[0] + ' ' + nowPosX[1];
 76 
 77     };
 78 })(jQuery);
 79 
 80 
 81 
 82 /*
 83 tlrkSlider
 84   
 85   example usage:
 86  
 87     $("#slider").tlrkSlider({
 88       autoStart: false,
 89       elements: {
 90         "img": {delay: 10},
 91         "h2": {delay: 500},
 92         ".copy": {delay: 800},
 93         ".button": {delay: 1000}
 94       }
 95     });
 96 
 97   to go to a specific frame:
 98     $("#slider").tlrkSlider("go", position);
 99     "position" can have one of the following values:
100     "next", "prev", "first", "last", "+1", "-1" or a numeric value
101   
102   to start/stop the automatic loop:
103     $("#slider").tlrkSlider("start");
104     $("#slider").tlrkSlider("stop");
105   
106   to change the delay between automatic transitions:
107     $("#slider").tlrkSlider("option", "delayAnimation", 1000);
108  
109   to change any option:
110     $("#slider").tlrkSlider("option", option_name, option_value);
111     
112   Changing the "elements" object is not tested.
113   
114   Changing the following options: "navigation", "navigationClass", "framesSelector", "autoStart" won't have any effect for now.
115   They are used only during the initialization.
116   
117   $("#slider").data("tlrkSlider") will return the plugin instance and the methods/properties can be accessed from there.
118   
119   The plugin contructor defaults are accessable through TlrkSlider.defaults
120   
121   The function that actually sweep the elements in/out can be overriden from
122     TlrkSlider.prototype._animationIn and TlrkSlider.prototype._animationOut
123    
124     See sweepIn/sweepOut 
125   
126  */
127 
128 
129 
130 ;(function( $, window, document, undefined ){
131   
132   // utility function that generates the "dots" navigation
133   function generateNavigation($el, count, config) {
134     var i, html = "",
135         width = count * 24;
136     
137     html += "<ol class='" + config.navigationClass + "' style='margin-left: -" + width/2 + "px; width: " + width + "px'>";
138     for (i = 0; i < count; i++) {
139       html += "<li><a " + (i === 0 ? "class='selected'" : "" ) + " href='#" + (i) + "'>slide</a></li>";
140     }
141     html += "</ol>";
142     
143     $el.append(html);
144   }
145   
146   function sweepOut($el, windowWidth) {
147     var dfr = $.Deferred(),
148         pos = $el.position(),
149         width = $el.width(),
150         delta, final,
151         options = $el.data("tlrkAnimOptions");
152     
153     windowWidth = windowWidth || $(window).width(); // check if the windowWidth is passed, if not - get it
154     
155     delta = windowWidth - pos.left;
156     final = -(delta);
157     
158     setTimeout(function(){
159       $el.animate({left: final, opacity: "toggle"}, options.speed, options.easing, function(){
160         dfr.resolve();
161       });
162     }, options.delay);
163     
164     return dfr.promise();
165   }
166   
167   function sweepIn($el, windowWidth, frameLeft) {
168     var dfr = $.Deferred(),
169         options = $el.data("tlrkAnimOptions"),
170         positionData = $el.data("tlrkOriginalPos"),
171         final = positionData.position.left,
172         rightEdge;
173     
174     windowWidth = windowWidth || $(window).width(); // check if the windowWidth is passed, if not - get it
175     
176     $el.css({opacity: 0, display: "block"}); // move it outside the right edge of the screen
177     $el.css("left", function(current){
178       return current + windowWidth - frameLeft;
179     });
180     
181     setTimeout(function(){
182       $el.animate({left: final, opacity: 1}, options.speed, options.easing, function(){
183         dfr.resolve();
184       });
185     }, options.delay);
186     
187     return dfr.promise();
188   }
189   
190   
191   // two pass function that first iterates all the elements and gets their position/width/height
192   // and then sets their position to absolute
193   function absolutize($elements) {
194     
195     // todo - move it to separate function and do it just once
196     // gather the original position/dimension data for all elements
197     $elements.each(function(){
198       var $t = $(this);
199       
200       if ($t.data("tlrkOriginalPos")) return
201       
202       $t.data("tlrkOriginalPos", {
203         position: $t.position(),
204         width: $t.width(),
205         height: $t.height(),
206         css_pos: $t.css("position"),
207         css_left: $t.css("left"),
208         css_top: $t.css("top"),
209         css_width: $t.css("width") || "auto",
210         css_height: $t.css("height") || "auto"
211       });
212       
213     });
214     
215     // set the absolute position
216     $elements.each(function(){
217       var $t = $(this),
218           opos = $t.data("tlrkOriginalPos");
219          
220       $t.css({
221         position: "absolute",
222         left: opos.position.left,
223         top: opos.position.top,
224         width: opos.width,
225         height: opos.height
226       });
227     });
228   }
229   
230   function restoreFrameElements($elements) {
231     $elements.each(function(){
232       var $t = $(this),
233           opos = $t.data("tlrkOriginalPos");
234           
235       if (!opos) return
236           
237       $t.css({
238         position: opos.css_pos,
239         left: opos.css_left,
240         top: opos.css_top,
241         width: opos.css_width,
242         height: opos.css_height
243       });
244     });
245     
246   }
247 
248   var TlrkSlider = function( elem, options ){
249       this.elem = elem;
250       this.$elem = $(elem);
251       this.options = options;
252     };
253 
254   // the plugin prototype
255   TlrkSlider.prototype = {
256     defaults: {
257 
258 
259       defaultElementOptions: {
260         speed: 1200,
261         easing: "easeInOutBack",
262         // interval before the element starts moving when the fadeIn/Out functions are called
263         // it's a good idea to give different delays for the different elements
264         // if all have the same delay they'll start moving all together
265         delay: 100 
266       },
267       
268       // dispose elements are these that are not included in the elements object
269       // but affect the document flow and will be fadedIn/Out
270       disposeDelay: 100, // delay for the dispose elements
271       disposeSpeed: 1000, // how quickly they'll fadeOut/In
272       
273       delayBetweenTransition: 1000, // time between starting fadeOut and fadeIn
274       delayAnimation: 7000, // time between auto changing the current frame
275       
276       loop: true, // if true when clicking next on the last frame the slider jumps to the first one
277       
278       autoStart: true, // start the automatic looping through the frames on init
279       
280       framesSelector: "section", // selector for the frames inside the slider
281       
282       elements: {
283         "p": {delay: 100, speed: 1000, easing: "easeInOutBack"}
284       },
285       
286       navigation: true, // the dots navigation on the bottom
287       navigationClass: "slider-nav",
288      
289       // callbacks
290       // another way to "catch" these events is with
291       // $(-slider-element-).bind("animationStart")
292       animationStart: null,
293       animationEnd: null
294     },
295 
296     init: function() {
297       var c, e, element, $element,
298           that = this,
299           $firstFrame;
300       
301       c = this.config = $.extend({}, this.defaults, this.options);
302       
303       this.elem.style.position = "relative"; // make the wrapping element relative
304       
305       // basics
306       this.$frames = this.$elem.find(c.framesSelector);
307       this.framesCount = this.$frames.length;
308       this.currentFrame = 0;
309       this.queue = [];
310       
311       this._$elementsByFrame = {};
312       this._$disposeElementsByFrame = {};
313       
314       for (i = 0; i < this.framesCount; i++) {
315         this._$elementsByFrame[i] = this._getFrameElements(i); // cache the $elements by frame
316         this._$disposeElementsByFrame[i] = this._getDisposeFrameElements(i); // cache the rest of the tree for each frame
317       }
318       
319       if (c.navigation) {
320         generateNavigation(this.$elem, this.framesCount, c);
321         this.$navigation = this.$elem.find("."+c.navigationClass);
322       }
323       
324       // bindings
325       this.$elem.find(".slider-nav").delegate("a", "click", function(e){
326         var frame = this.getAttribute("href").split("#")[1];
327         that.go.call(that, frame);
328         return false;
329       });
330       
331       this.$elem // internal bindings for the callbacks
332         .bind("animationStart", function(){
333           if ($.isFunction(c.animationStart)) {c.animationStart.apply(that, arguments);}
334         })
335         .bind("animationEnd", function(){
336           if ($.isFunction(c.animationEnd)) {c.animationEnd.apply(that, arguments);}
337         })
338       ;
339       
340       // start animation?
341       if (c.autoStart) {
342         this.start();
343       } else {
344         this.running = false;
345       }
346 
347       return this;
348     },
349     
350     start: function(instant) {
351       var that = this;
352       
353       if (this.timer) { // we'll clear the current timer
354         window.clearTimeout(this.timer);
355       }
356       
357       this.running = true;
358       
359       if (instant) {
360         that.nextFrame();
361       } else {
362         this.timer = window.setTimeout(function(){ that.nextFrame.call(that) }, that.config.delayAnimation);
363       }
364     },
365     
366     stop: function() {
367       if (!this.running) return; // we are not running
368       
369       this.running = false;
370       window.clearTimeout(this.timer);
371     },
372 
373     // main function for changing frames
374     selectFrame: function(frame, dfr) {
375       var c = this.config, // shorthand for the config
376           that = this,
377           dfr = dfr || $.Deferred(),
378           dFadeIn = $.Deferred(),
379           dFadeOut = $.Deferred();
380           
381       if (isNaN(frame) || frame < 0 || frame > this.framesCount || frame === this.currentFrame) {
382         dfr.reject();
383         return dfr.promise();
384       }
385 
386       // clear the animation loop interval if the animation is running
387       if (this.running && this.timer) { 
388         window.clearTimeout(this.timer);
389       }
390 
391       // check if we are currenly running an animation.
392       if (this.animated && this.queue.length > 0) {
393         // wait for the last item in the queue to finish
394         this.queue[this.queue.length-1].done(function(){
395           that.selectFrame(frame, dfr); // and call again the selectFrame
396         })
397         return dfr.promise();
398       }
399       
400       this.animated = true;
401       this.$elem.trigger("animationStart", [this, frame]);
402       
403       this.queue.push(dfr);
404       
405       // fade the frames
406       dFadeOut = this._fadeOutFrame(this.currentFrame);
407       
408       // hide the fadetout frame
409       dFadeOut.done(function(){
410         that.$frames.eq(that.currentFrame).hide();
411       });
412       
413       window.setTimeout(function(){ // then wait delayBetweenTransition and fadeIn the new frame
414         dFadeIn = that._fadeInFrame.call(that, frame).done(function(){
415           // when both the fadeIn and fadeOut are done we'll resolve the selectFrame promise
416           $.when(dFadeOut, dFadeIn).done(function(){
417             that.animated = false;
418             that.queue.shift();
419             that.$elem.trigger("animationEnd", [that]);
420             that.currentFrame = frame;
421             dfr.resolve();
422           });
423         });
424       }, c.delayBetweenTransition);
425       
426       // navigation html change
427       if (this.config.navigation) {
428         this.$navigation.find(".selected").removeClass("selected").end()
429           .find("a").eq(frame).addClass("selected");
430       }
431         
432       dfr.done(function(){ // we'll resume the loop animation after the transitions are done
433         if (that.running) {
434           that.start();
435         }
436       });
437       
438       return dfr.promise();
439     },
440     
441     _fadeFrame: function(frame, callback, direction) {
442       var dfr = $.Deferred(),
443           $frame = this.$frames.eq(frame),
444           $elements = this._$elementsByFrame[frame],
445           windowWidth = $(window).width(), // cache it before the animations, so we don't have to check it for each element 
446           i, len,
447           that = this,
448           elementAnimations = [],
449           $disposeElements = this._$disposeElementsByFrame[frame],
450           $affectedElements,
451           frameLeft = $frame.offset().left;
452           
453       direction = direction || "out";
454           
455       if (!$.isFunction(callback)) return; // do nothing if there's no callback passed
456       
457       $affectedElements = $elements.add($disposeElements);
458       
459       // position absolute the animation and dispose elements
460       absolutize($affectedElements);
461       
462       // toggle the dispose elements
463       if ($disposeElements.length > 0) {
464         window.setTimeout(function(){
465           $disposeElements[direction === "out" ? "fadeOut" : "fadeIn"](that.config.disposeSpeed);
466         }, this.config.disposeDelay);
467       }
468       
469       // invoke the callback for each element
470       // the callback must return a promise
471       $elements.each(function(){
472         elementAnimations.push( callback.call(that, $(this), windowWidth, frameLeft) );
473       });
474       
475       // wait for all the elements to finish their animation
476       $.when.apply(this, elementAnimations).done(function(){
477         //restoreFrameElements($affectedElements); // and restore the elements' position
478         dfr.resolve(); // resolve the fade function
479       });
480       
481       return dfr.promise();
482     },
483 
484     _fadeOutFrame: function(frame) {
485       var dfr = $.Deferred(),
486           $frame = this.$frames.eq(frame),
487           $disposeElements = this._$disposeElementsByFrame[frame];
488       
489       this._fadeFrame(frame, this._animationOut, "out").done(function(){
490         dfr.resolve();
491       })
492       
493       return dfr.promise();
494     },
495     
496     _fadeInFrame: function(frame) {
497       var dfr = $.Deferred(),
498           $frame = this.$frames.eq(frame),
499           $elements = this._$elementsByFrame[frame];
500       
501       this._restoreFrame(frame);
502       
503       $frame.show();
504       
505       this._fadeFrame(frame, this._animationIn, "in").done(function(){
506         dfr.resolve();
507       });
508       
509       return dfr.promise();
510     },
511     
512     _restoreFrame: function(frame){
513       if (!frame) return
514       restoreFrameElements( this._$elementsByFrame[frame].add(this._$disposeElementsByFrame[frame]) );
515     },
516     
517     nextFrame: function() {
518       var frame = this.currentFrame+1,
519           dfr = $.Deferred();
520           
521       if (frame > this.framesCount-1) {
522         if (this.config.loop) {
523           frame = 0;
524         } else {
525           dfr.reject();
526         }
527       };
528       
529       this.selectFrame(frame).done(function(){
530         dfr.resolve();
531       });
532       
533       return dfr.promise();
534     },
535     
536     prevFrame: function() {
537       var frame = this.currentFrame-1,
538           dfr = $.Deferred();
539           
540       if (frame < 0) {
541         if (this.config.loop) {
542           frame = this.framesCount-1;
543         } else {
544           dfr.reject();
545           return dfr.promise();
546         }
547       }
548       
549       this.selectFrame(frame).done(function(){
550         dfr.resolve();
551       });
552       
553       return dfr.promise();
554     },
555     
556     go: function(str) { // shorthand
557       switch (str) {
558         case "next":
559         case "+1":
560           this.nextFrame();
561           break;
562 
563         case "prev":
564         case "-1":
565           this.prevFrame();
566           break;
567         
568         case "first":
569           this.selectFrame(0);
570           break;
571         
572         case "last":
573           this.selectFrame(this.framesCount-1);
574           break;
575         
576         default:
577           if (isNaN(str)) return;
578           this.selectFrame(Number(str));
579       }
580     },
581     
582     // returns jquery collection of animation elements
583     _getFrameElements: function(frame) { 
584       var $frame = this.$frames.eq(frame),
585           elements = this.config.elements,
586           e, elementOptions,
587           $found, $frameElements = $([]);
588           
589       for (e in elements) {
590         elementOptions = elements[e];
591         $found = $frame.find(e);
592         $found.addClass("t-frame-element").data("tlrkAnimOptions", $.extend({}, this.defaults.defaultElementOptions, elementOptions ));
593         $frameElements = $frameElements.add($found);
594       }
595       
596       return $frameElements;
597     },
598 
599     // returns jquery collection of elements that have to be faded out
600     // i.e. elements on the same level as the animation elements
601     // that doesn't contain other animation elements
602     _getDisposeFrameElements: function(frame) {
603       var $disposeElements = $([]),
604           $frame = this.$frames.eq(frame),
605           $elements = this._$elementsByFrame[frame];
606 
607       $elements.each(function(){
608         var $t = $(this),
609             $siblings = $t.siblings().not(".t-frame-element");
610         
611         $siblings.each(function(){
612           var $t = $(this);
613           // check if the node is not already marked and doesn't contains other frame elements
614           if (!$t.hasClass("t-frame-dispose") && $t.find(".t-frame-element").length === 0) {
615             $t.addClass("t-frame-dispose");
616             $disposeElements = $disposeElements.add($t);
617           }
618         });
619         
620       });
621       return $disposeElements;
622     },
623     
624     
625     // expose the internal animationIn/Out functions that are called for each element in the frame
626     // two arguments are passed - the $element which have to be animated and the window width
627     _animationIn: sweepIn,
628     _animationOut: sweepOut
629     
630   }
631 
632   TlrkSlider.defaults = TlrkSlider.prototype.defaults;
633 
634   $.fn.tlrkSlider = function(options) {
635     var otherArgs = Array.prototype.slice.call(arguments, 1);
636         
637     return this.each(function() {
638       var $el = $(this),
639           pluginData = $el.data("tlrkSlider");
640       
641       if (!pluginData) { // check if the slider is already attached
642         pluginData = new TlrkSlider(this, options).init();
643         $el.data("tlrkSlider", pluginData);
644         return;
645       }
646       
647       //change the options or call a method
648       if (typeof options === "string") {
649         
650         // setting / getting option(s)
651         if (options === "option") {
652           
653           if (typeof otherArgs[0] === "string" && typeof otherArgs[1] !== "undefined") { // set an option value
654             pluginData.config[otherArgs[0]] = otherArgs[1]; 
655           }
656           
657           if (typeof otherArgs[0] === "object") { // extend the config with new options
658             pluginData.config = $.extend(pluginData.config, otherArgs[0]);
659           }
660           
661         } else { // call a method?
662           try {
663             pluginData[options].apply(pluginData, otherArgs);
664           } catch(ex) {
665             throw "Error calling a plugin method (" + ex + ")";
666           }
667         }
668       }
669     });
670   };
671 
672   window.TlrkSlider = TlrkSlider;
673 
674 })( jQuery, window , document );
675 
676 $(document).ready(function(){
677   var $backgrounds = $(".header-content").find(".parallax-bg"),
678       LAYER_OFFSET = 30,
679       PRLX_SPEED = 1500,
680       $slider;
681   
682   $slider = $("#slider").tlrkSlider({
683     autoStart: true,
684     animationStart: function(ev, slider, step){
685       var max_steps = this.framesCount; 
686       $backgrounds.each(function(idx, el){
687         var pos = (step * (100 / max_steps)) + (LAYER_OFFSET * idx);
688         $(this).animate({"backgroundPosition": pos + "% 0"}, PRLX_SPEED);
689       });
690     },
691     elements: {
692       "img": {delay: 10},
693       "h2": {delay: 500},
694       ".copy": {delay: 800},
695       ".button": {delay: 1000}
696     }
697   });
698   
699   $(".header-content")
700     .hover(
701       function(){$(this).find(".slider-prev, .slider-next").show();},
702       function(){$(this).find(".slider-prev, .slider-next").hide();}
703     )
704     .find(".slider-prev").click(function(){$slider.tlrkSlider("go", "prev"); return false; }).end()
705     .find(".slider-next").click(function(){$slider.tlrkSlider("go", "next"); return false; });
706 
707 });
View Code

 



喜欢的朋友,可以下载 

下载地址


推荐阅读