国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
HTML代碼
CSS代碼:
JavaScript代碼:
Maison interface Web Tutoriel H5 Introduction détaillée à l'exemple de code d'animation de graphique de focus de lecture d'éléments personnalisés HTML5

Introduction détaillée à l'exemple de code d'animation de graphique de focus de lecture d'éléments personnalisés HTML5

Mar 06, 2017 pm 03:34 PM

這是一款基于HTML5的焦點(diǎn)圖動(dòng)畫,它和其他焦點(diǎn)圖不同的地方在于,它播放的不僅僅是圖片,而是可以自定義控制的網(wǎng)頁(yè)元素。它不僅在圖片間切換有過(guò)渡動(dòng)畫效果,而且在切換時(shí)圖片中的元素也將出現(xiàn)動(dòng)畫效果,比如圖中的文字移動(dòng)、打散、重新組合等。這款HTML5動(dòng)畫圖片播放器算得上是高端大氣上檔次。

HTML代碼

<p class="parallax-bg" id="slider-wrap">
	<p class="slider parallax-bg" id="slider">
           <p class="slider-sections sandbox"> 
		<section class="first">
                     <img alt="Kendo UI" src="images/home-banner-1.png"/>
                     <p class="text">
                          <h2>SmartSite Ver 2.2<br />智能網(wǎng)站管理系統(tǒng) </h2>
                    <p class="copy">采用前后臺(tái)完全分離技術(shù),通過(guò)標(biāo)簽(支持標(biāo)簽循環(huán)嵌套、判斷標(biāo)簽、自定義標(biāo)簽、文件循環(huán)嵌套等)加模板技術(shù).全站生成純靜態(tài)頁(yè)。</p>
                          <p class="button"><a href="#" onclick="_gaq.push([&#39;_trackPageview&#39;, &#39;#&#39;]);">Download</a> 
                          <a class="dimmed" onclick="_gaq.push([&#39;_trackPageview&#39;, &#39;#&#39;]);" href="#">Learn More</a></p>
                     </p>
                </section>
		<section>
                     <img src="images/dataviz-home-image-q2.png" alt="Kendo UI" />
                     <p class="text" style="padding-top: 10px;">
                          <h2>企業(yè)網(wǎng)站管理系統(tǒng)</h2>
                          <p class="copy">單頁(yè)面、單頁(yè)面索引、新聞、產(chǎn)品展示、下載、友情鏈接、網(wǎng)上商城,在線支付、配送、支付方式管理、廣告等模塊。</p>
                          <p class="button"><a href="#" onclick="_gaq.push([&#39;_trackPageview&#39;, &#39;#&#39;]);">Download</a> 
                          <a class="dimmed" onclick="_gaq.push([&#39;_trackPageview&#39;, &#39;#&#39;]);" href="#">Learn More</a></p>
                     </p>
                </section>
		<section>
                     <img src="images/home_banner_web-q2.png" alt="Kendo UI" />
                     <p class="text">
                          <h2>智能移動(dòng)網(wǎng)站管理系統(tǒng)</h2>
                          <p class="copy">基于jquery.Mobile、HTML5技術(shù)框架,前后臺(tái)完全分離,采用標(biāo)簽加模板技術(shù),全站生成純靜態(tài)頁(yè)。</p>
                          <p class="button"><a href="#" onclick="_gaq.push([&#39;_trackPageview&#39;, &#39;#&#39;]);">Download</a> 
                          <a class="dimmed" onclick="_gaq.push([&#39;_trackPageview&#39;, &#39;#&#39;]);" href="#">Learn More</a></p>
                     </p>
                </section>
           </p>
      </p>
      <a class="slider-prev" href="javascript: void(0)">?</a> <a class="slider-next" href="javascript: void(0)">?</a>
</p>

CSS代碼:

這里列出的是這個(gè)焦點(diǎn)圖相關(guān)的核心CSS代碼。

.slider section {display: none;}
.slider section.first {display: block;}

.slider-sections, .slider-sections section {width: 861px; height: 335px;}

.slider-sections {margin: 0 auto; position: relative;}
.slider-sections section {position: absolute; top: 0; left: 0px; }

.header-content h2 
{
	font:400 32px/1.2 "microsoft yahei", Tahoma, arial, sans-serif;
	color: #fff;
	margin: 0 0 26px;
}
.header-content p 
{
    margin: 0 0 30px;
}

.header-content .centered-content
{
	padding-top: 30px;
	padding-bottom: 10px;
}

.button {
	float: left;
	width: auto !important;
	list-style: none;
}
	.button a,
	.button button,
	.button input { /* Standard black button */
	  font-size: 15px;
	  /*font-family: &#39;lucida sans&#39;,arial,helvetica,sans-serif;*/
	  line-height: 18px;
		color: #fff !important;

	  text-decoration: none;

	  padding: 5px 14px 6px 13px;
		display: block;
		width: auto;
		position: relative;
		z-index: 2;

	    border: none;
        -moz-border-radius: 3px;
		border-radius: 3px;
		cursor: pointer;

		background: #313131; /* Old browsers */
		background: -moz-linear-gradient(top, #313131 0%, #222222 100%); /* FF3.6+ */
		background: -webkit-linear-gradient(top, #313131 0%,#222222 100%); /* Chrome10+,Safari5.1+ */
		background: -o-linear-gradient(top, #313131 0%,#222222 100%); /* Opera11.10+ */
		background: -ms-linear-gradient(top, #313131 0%,#222222 100%); /* IE10+ */
		background: linear-gradient(top, #313131 0%,#222222 100%); /* W3C */

		-webkit-transition: all 0.3s ease;
		-moz-transition: all 0.3s ease;
		-o-transition: all 0.3s ease;
		transition: all  0.3s ease;
	}

	.button a:hover,
	.button input:hover,
	.button button:hover,
	.button a:focus,
	.button input:focus,
	.button button:focus
	{
	  background: #464646; /* Old browsers */
		background: -moz-linear-gradient(top, #464646 0%, #393939 100%); /* FF3.6+ */
		background: -webkit-linear-gradient(top, #464646 0%,#393939 100%); /* Chrome10+,Safari5.1+ */
		background: -o-linear-gradient(top, #464646 0%,#393939 100%); /* Opera11.10+ */
		background: -ms-linear-gradient(top, #464646 0%,#393939 100%); /* IE10+ */
		background: linear-gradient(top, #464646 0%,#393939 100%); /* W3C */
    }

	header .header-content .button a,
	#content .button a:hover
	{
	    text-decoration: none;
    }

.header-content .beta-ribbons {
    position: absolute; 
    height: 120px;
    width: 85px;
    text-indent: -200px;
    overflow: hidden;
    background: url(../images/kendo-ribbons.png) no-repeat 0 0;
}

.header-content .beta-ribbons.ribbon-1 {
    background-position: -170px 0;
    top: -3px;
    right: -145px;
}

.header-content p.copy .beta-ribbons.ribbon-1 {
    top: -135px;
    left: 900px;
}

.header-content .beta-ribbons.ribbon-4 {
    background-position: -255px 0;
    left: -62px;
    top: -30px;
    z-index: 10;
		text-indent: -2000px;
}

JavaScript代碼:

下面是這個(gè)焦點(diǎn)圖插件的代碼。

/**
* @author Alexander Farkas
* v. 1.22
*/
(function ($)
{
    if (!document.defaultView || !document.defaultView.getComputedStyle)
    { // IE6-IE8
        var oldCurCSS = $.curCSS;
        $.curCSS = function (elem, name, force)
        {
            if (name === &#39;background-position&#39;)
            {
                name = &#39;backgroundPosition&#39;;
            }
            if (name !== &#39;backgroundPosition&#39; || !elem.currentStyle || elem.currentStyle[name])
            {
                return oldCurCSS.apply(this, arguments);
            }
            var style = elem.style;
            if (!force && style && style[name])
            {
                return style[name];
            }
            return oldCurCSS(elem, &#39;backgroundPositionX&#39;, force) + &#39; &#39; + oldCurCSS(elem, &#39;backgroundPositionY&#39;, force);
        };
    }

    var oldAnim = $.fn.animate;
    $.fn.animate = function (prop)
    {
        if (&#39;background-position&#39; in prop)
        {
            prop.backgroundPosition = prop[&#39;background-position&#39;];
            delete prop[&#39;background-position&#39;];
        }
        if (&#39;backgroundPosition&#39; in prop)
        {
            prop.backgroundPosition = &#39;(&#39; + prop.backgroundPosition;
        }
        return oldAnim.apply(this, arguments);
    };

    function toArray(strg)
    {
        strg = strg.replace(/left|top/g, &#39;0px&#39;);
        strg = strg.replace(/right|bottom/g, &#39;100%&#39;);
        strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g, "$1px$2");
        var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
        return [parseFloat(res[1], 10), res[2], parseFloat(res[3], 10), res[3]];
    }

    $.fx.step.backgroundPosition = function (fx)
    {
        if (!fx.bgPosReady)
        {
            var start = $.curCSS(fx.elem, &#39;backgroundPosition&#39;);
            if (!start)
            {//FF2 no inline-style fallback
                start = &#39;0px 0px&#39;;
            }

            start = toArray(start);
            fx.start = [start[0], start[2]];
            var end = toArray(fx.end);
            fx.end = [end[0], end[2]];

            fx.unit = [end[1], end[3]];
            fx.bgPosReady = true;
        }
        //return;
        var nowPosX = [];
        nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
        nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
        fx.elem.style.backgroundPosition = nowPosX[0] + &#39; &#39; + nowPosX[1];

    };
})(jQuery);

/*
tlrkSlider

  example usage:

    $("#slider").tlrkSlider({
      autoStart: false,
      elements: {
        "img": {delay: 10},
        "h2": {delay: 500},
        ".copy": {delay: 800},
        ".button": {delay: 1000}
      }
    });

  to go to a specific frame:
    $("#slider").tlrkSlider("go", position);
    "position" can have one of the following values:
    "next", "prev", "first", "last", "+1", "-1" or a numeric value

  to start/stop the automatic loop:
    $("#slider").tlrkSlider("start");
    $("#slider").tlrkSlider("stop");

  to change the delay between automatic transitions:
    $("#slider").tlrkSlider("option", "delayAnimation", 1000);

  to change any option:
    $("#slider").tlrkSlider("option", option_name, option_value);

  Changing the "elements" object is not tested.

  Changing the following options: "navigation", "navigationClass", "framesSelector", "autoStart" won&#39;t have any effect for now.
  They are used only during the initialization.

  $("#slider").data("tlrkSlider") will return the plugin instance and the methods/properties can be accessed from there.

  The plugin contructor defaults are accessable through TlrkSlider.defaults

  The function that actually sweep the elements in/out can be overriden from
    TlrkSlider.prototype._animationIn and TlrkSlider.prototype._animationOut

    See sweepIn/sweepOut 

 */

;(function( $, window, document, undefined ){

  // utility function that generates the "dots" navigation
  function generateNavigation($el, count, config) {
    var i, html = "",
        width = count * 24;

    html += "<ol class=&#39;" + config.navigationClass + "&#39; style=&#39;margin-left: -" + width/2 + "px; width: " + width + "px&#39;>";
    for (i = 0; i < count; i++) {
      html += "<li><a " + (i === 0 ? "class=&#39;selected&#39;" : "" ) + " href=&#39;#" + (i) + "&#39;>slide</a></li>";
    }
    html += "</ol>";

    $el.append(html);
  }

  function sweepOut($el, windowWidth) {
    var dfr = $.Deferred(),
        pos = $el.position(),
        width = $el.width(),
        delta, final,
        options = $el.data("tlrkAnimOptions");

    windowWidth = windowWidth || $(window).width(); // check if the windowWidth is passed, if not - get it

    delta = windowWidth - pos.left;
    final = -(delta);

    setTimeout(function(){
      $el.animate({left: final, opacity: "toggle"}, options.speed, options.easing, function(){
        dfr.resolve();
      });
    }, options.delay);

    return dfr.promise();
  }

  function sweepIn($el, windowWidth, frameLeft) {
    var dfr = $.Deferred(),
        options = $el.data("tlrkAnimOptions"),
        positionData = $el.data("tlrkOriginalPos"),
        final = positionData.position.left,
        rightEdge;

    windowWidth = windowWidth || $(window).width(); // check if the windowWidth is passed, if not - get it

    $el.css({opacity: 0, display: "block"}); // move it outside the right edge of the screen
    $el.css("left", function(current){
      return current + windowWidth - frameLeft;
    });

    setTimeout(function(){
      $el.animate({left: final, opacity: 1}, options.speed, options.easing, function(){
        dfr.resolve();
      });
    }, options.delay);

    return dfr.promise();
  }

  // two pass function that first iterates all the elements and gets their position/width/height
  // and then sets their position to absolute
  function absolutize($elements) {

    // todo - move it to separate function and do it just once
    // gather the original position/dimension data for all elements
    $elements.each(function(){
      var $t = $(this);

      if ($t.data("tlrkOriginalPos")) return

      $t.data("tlrkOriginalPos", {
        position: $t.position(),
        width: $t.width(),
        height: $t.height(),
        css_pos: $t.css("position"),
        css_left: $t.css("left"),
        css_top: $t.css("top"),
        css_width: $t.css("width") || "auto",
        css_height: $t.css("height") || "auto"
      });

    });

    // set the absolute position
    $elements.each(function(){
      var $t = $(this),
          opos = $t.data("tlrkOriginalPos");

      $t.css({
        position: "absolute",
        left: opos.position.left,
        top: opos.position.top,
        width: opos.width,
        height: opos.height
      });
    });
  }

  function restoreFrameElements($elements) {
    $elements.each(function(){
      var $t = $(this),
          opos = $t.data("tlrkOriginalPos");

      if (!opos) return

      $t.css({
        position: opos.css_pos,
        left: opos.css_left,
        top: opos.css_top,
        width: opos.css_width,
        height: opos.css_height
      });
    });

  }

  var TlrkSlider = function( elem, options ){
      this.elem = elem;
      this.$elem = $(elem);
      this.options = options;
    };

  // the plugin prototype
  TlrkSlider.prototype = {
    defaults: {

      defaultElementOptions: {
        speed: 1200,
        easing: "easeInOutBack",
        // interval before the element starts moving when the fadeIn/Out functions are called
        // it&#39;s a good idea to give different delays for the different elements
        // if all have the same delay they&#39;ll start moving all together
        delay: 100 
      },

      // dispose elements are these that are not included in the elements object
      // but affect the document flow and will be fadedIn/Out
      disposeDelay: 100, // delay for the dispose elements
      disposeSpeed: 1000, // how quickly they&#39;ll fadeOut/In

      delayBetweenTransition: 1000, // time between starting fadeOut and fadeIn
      delayAnimation: 7000, // time between auto changing the current frame

      loop: true, // if true when clicking next on the last frame the slider jumps to the first one

      autoStart: true, // start the automatic looping through the frames on init

      framesSelector: "section", // selector for the frames inside the slider

      elements: {
        "p": {delay: 100, speed: 1000, easing: "easeInOutBack"}
      },

      navigation: true, // the dots navigation on the bottom
      navigationClass: "slider-nav",

      // callbacks
      // another way to "catch" these events is with
      // $(-slider-element-).bind("animationStart")
      animationStart: null,
      animationEnd: null
    },

    init: function() {
      var c, e, element, $element,
          that = this,
          $firstFrame;

      c = this.config = $.extend({}, this.defaults, this.options);

      this.elem.style.position = "relative"; // make the wrapping element relative

      // basics
      this.$frames = this.$elem.find(c.framesSelector);
      this.framesCount = this.$frames.length;
      this.currentFrame = 0;
      this.queue = [];

      this._$elementsByFrame = {};
      this._$disposeElementsByFrame = {};

      for (i = 0; i < this.framesCount; i++) {
        this._$elementsByFrame[i] = this._getFrameElements(i); // cache the $elements by frame
        this._$disposeElementsByFrame[i] = this._getDisposeFrameElements(i); // cache the rest of the tree for each frame
      }

      if (c.navigation) {
        generateNavigation(this.$elem, this.framesCount, c);
        this.$navigation = this.$elem.find("."+c.navigationClass);
      }

      // bindings
      this.$elem.find(".slider-nav").delegate("a", "click", function(e){
        var frame = this.getAttribute("href").split("#")[1];
        that.go.call(that, frame);
        return false;
      });

      this.$elem // internal bindings for the callbacks
        .bind("animationStart", function(){
          if ($.isFunction(c.animationStart)) {c.animationStart.apply(that, arguments);}
        })
        .bind("animationEnd", function(){
          if ($.isFunction(c.animationEnd)) {c.animationEnd.apply(that, arguments);}
        })
      ;

      // start animation?
      if (c.autoStart) {
        this.start();
      } else {
        this.running = false;
      }

      return this;
    },

    start: function(instant) {
      var that = this;

      if (this.timer) { // we&#39;ll clear the current timer
        window.clearTimeout(this.timer);
      }

      this.running = true;

      if (instant) {
        that.nextFrame();
      } else {
        this.timer = window.setTimeout(function(){ that.nextFrame.call(that) }, that.config.delayAnimation);
      }
    },

    stop: function() {
      if (!this.running) return; // we are not running

      this.running = false;
      window.clearTimeout(this.timer);
    },

    // main function for changing frames
    selectFrame: function(frame, dfr) {
      var c = this.config, // shorthand for the config
          that = this,
          dfr = dfr || $.Deferred(),
          dFadeIn = $.Deferred(),
          dFadeOut = $.Deferred();

      if (isNaN(frame) || frame < 0 || frame > this.framesCount || frame === this.currentFrame) {
        dfr.reject();
        return dfr.promise();
      }

      // clear the animation loop interval if the animation is running
      if (this.running && this.timer) { 
        window.clearTimeout(this.timer);
      }

      // check if we are currenly running an animation.
      if (this.animated && this.queue.length > 0) {
        // wait for the last item in the queue to finish
        this.queue[this.queue.length-1].done(function(){
          that.selectFrame(frame, dfr); // and call again the selectFrame
        })
        return dfr.promise();
      }

      this.animated = true;
      this.$elem.trigger("animationStart", [this, frame]);

      this.queue.push(dfr);

      // fade the frames
      dFadeOut = this._fadeOutFrame(this.currentFrame);

      // hide the fadetout frame
      dFadeOut.done(function(){
        that.$frames.eq(that.currentFrame).hide();
      });

      window.setTimeout(function(){ // then wait delayBetweenTransition and fadeIn the new frame
        dFadeIn = that._fadeInFrame.call(that, frame).done(function(){
          // when both the fadeIn and fadeOut are done we&#39;ll resolve the selectFrame promise
          $.when(dFadeOut, dFadeIn).done(function(){
            that.animated = false;
            that.queue.shift();
            that.$elem.trigger("animationEnd", [that]);
            that.currentFrame = frame;
            dfr.resolve();
          });
        });
      }, c.delayBetweenTransition);

      // navigation html change
      if (this.config.navigation) {
        this.$navigation.find(".selected").removeClass("selected").end()
          .find("a").eq(frame).addClass("selected");
      }

      dfr.done(function(){ // we&#39;ll resume the loop animation after the transitions are done
        if (that.running) {
          that.start();
        }
      });

      return dfr.promise();
    },

    _fadeFrame: function(frame, callback, direction) {
      var dfr = $.Deferred(),
          $frame = this.$frames.eq(frame),
          $elements = this._$elementsByFrame[frame],
          windowWidth = $(window).width(), // cache it before the animations, so we don&#39;t have to check it for each element 
          i, len,
          that = this,
          elementAnimations = [],
          $disposeElements = this._$disposeElementsByFrame[frame],
          $affectedElements,
          frameLeft = $frame.offset().left;

      direction = direction || "out";

      if (!$.isFunction(callback)) return; // do nothing if there&#39;s no callback passed

      $affectedElements = $elements.add($disposeElements);

      // position absolute the animation and dispose elements
      absolutize($affectedElements);

      // toggle the dispose elements
      if ($disposeElements.length > 0) {
        window.setTimeout(function(){
          $disposeElements[direction === "out" ? "fadeOut" : "fadeIn"](that.config.disposeSpeed);
        }, this.config.disposeDelay);
      }

      // invoke the callback for each element
      // the callback must return a promise
      $elements.each(function(){
        elementAnimations.push( callback.call(that, $(this), windowWidth, frameLeft) );
      });

      // wait for all the elements to finish their animation
      $.when.apply(this, elementAnimations).done(function(){
        //restoreFrameElements($affectedElements); // and restore the elements&#39; position
        dfr.resolve(); // resolve the fade function
      });

      return dfr.promise();
    },

    _fadeOutFrame: function(frame) {
      var dfr = $.Deferred(),
          $frame = this.$frames.eq(frame),
          $disposeElements = this._$disposeElementsByFrame[frame];

      this._fadeFrame(frame, this._animationOut, "out").done(function(){
        dfr.resolve();
      })

      return dfr.promise();
    },

    _fadeInFrame: function(frame) {
      var dfr = $.Deferred(),
          $frame = this.$frames.eq(frame),
          $elements = this._$elementsByFrame[frame];

      this._restoreFrame(frame);

      $frame.show();

      this._fadeFrame(frame, this._animationIn, "in").done(function(){
        dfr.resolve();
      });

      return dfr.promise();
    },

    _restoreFrame: function(frame){
      if (!frame) return
      restoreFrameElements( this._$elementsByFrame[frame].add(this._$disposeElementsByFrame[frame]) );
    },

    nextFrame: function() {
      var frame = this.currentFrame+1,
          dfr = $.Deferred();

      if (frame > this.framesCount-1) {
        if (this.config.loop) {
          frame = 0;
        } else {
          dfr.reject();
        }
      };

      this.selectFrame(frame).done(function(){
        dfr.resolve();
      });

      return dfr.promise();
    },

    prevFrame: function() {
      var frame = this.currentFrame-1,
          dfr = $.Deferred();

      if (frame < 0) {
        if (this.config.loop) {
          frame = this.framesCount-1;
        } else {
          dfr.reject();
          return dfr.promise();
        }
      }

      this.selectFrame(frame).done(function(){
        dfr.resolve();
      });

      return dfr.promise();
    },

    go: function(str) { // shorthand
      switch (str) {
        case "next":
        case "+1":
          this.nextFrame();
          break;

        case "prev":
        case "-1":
          this.prevFrame();
          break;

        case "first":
          this.selectFrame(0);
          break;

        case "last":
          this.selectFrame(this.framesCount-1);
          break;

        default:
          if (isNaN(str)) return;
          this.selectFrame(Number(str));
      }
    },

    // returns jquery collection of animation elements
    _getFrameElements: function(frame) { 
      var $frame = this.$frames.eq(frame),
          elements = this.config.elements,
          e, elementOptions,
          $found, $frameElements = $([]);

      for (e in elements) {
        elementOptions = elements[e];
        $found = $frame.find(e);
        $found.addClass("t-frame-element").data("tlrkAnimOptions", $.extend({}, this.defaults.defaultElementOptions, elementOptions ));
        $frameElements = $frameElements.add($found);
      }

      return $frameElements;
    },

    // returns jquery collection of elements that have to be faded out
    // i.e. elements on the same level as the animation elements
    // that doesn&#39;t contain other animation elements
    _getDisposeFrameElements: function(frame) {
      var $disposeElements = $([]),
          $frame = this.$frames.eq(frame),
          $elements = this._$elementsByFrame[frame];

      $elements.each(function(){
        var $t = $(this),
            $siblings = $t.siblings().not(".t-frame-element");

        $siblings.each(function(){
          var $t = $(this);
          // check if the node is not already marked and doesn&#39;t contains other frame elements
          if (!$t.hasClass("t-frame-dispose") && $t.find(".t-frame-element").length === 0) {
            $t.addClass("t-frame-dispose");
            $disposeElements = $disposeElements.add($t);
          }
        });

      });
      return $disposeElements;
    },

    // expose the internal animationIn/Out functions that are called for each element in the frame
    // two arguments are passed - the $element which have to be animated and the window width
    _animationIn: sweepIn,
    _animationOut: sweepOut

  }

  TlrkSlider.defaults = TlrkSlider.prototype.defaults;

  $.fn.tlrkSlider = function(options) {
    var otherArgs = Array.prototype.slice.call(arguments, 1);

    return this.each(function() {
      var $el = $(this),
          pluginData = $el.data("tlrkSlider");

      if (!pluginData) { // check if the slider is already attached
        pluginData = new TlrkSlider(this, options).init();
        $el.data("tlrkSlider", pluginData);
        return;
      }

      //change the options or call a method
      if (typeof options === "string") {

        // setting / getting option(s)
        if (options === "option") {

          if (typeof otherArgs[0] === "string" && typeof otherArgs[1] !== "undefined") { // set an option value
            pluginData.config[otherArgs[0]] = otherArgs[1]; 
          }

          if (typeof otherArgs[0] === "object") { // extend the config with new options
            pluginData.config = $.extend(pluginData.config, otherArgs[0]);
          }

        } else { // call a method?
          try {
            pluginData[options].apply(pluginData, otherArgs);
          } catch(ex) {
            throw "Error calling a plugin method (" + ex + ")";
          }
        }
      }
    });
  };

  window.TlrkSlider = TlrkSlider;

})( jQuery, window , document );

下面是頁(yè)面調(diào)用的JS代碼:

$(document).ready(function(){
  var $backgrounds = $(".header-content").find(".parallax-bg"),
      LAYER_OFFSET = 30,
      PRLX_SPEED = 1500,
      $slider;

  $slider = $("#slider").tlrkSlider({
    autoStart: true,
    animationStart: function(ev, slider, step){
      var max_steps = this.framesCount; 
      $backgrounds.each(function(idx, el){
        var pos = (step * (100 / max_steps)) + (LAYER_OFFSET * idx);
        $(this).animate({"backgroundPosition": pos + "% 0"}, PRLX_SPEED);
      });
    },
    elements: {
      "img": {delay: 10},
      "h2": {delay: 500},
      ".copy": {delay: 800},
      ".button": {delay: 1000}
    }
  });

  $(".header-content")
    .hover(
      function(){$(this).find(".slider-prev, .slider-next").show();},
      function(){$(this).find(".slider-prev, .slider-next").hide();}
    )
    .find(".slider-prev").click(function(){$slider.tlrkSlider("go", "prev"); return false; }).end()
    .find(".slider-next").click(function(){$slider.tlrkSlider("go", "next"); return false; });

});

以上就是HTML5自定義元素播放焦點(diǎn)圖動(dòng)畫示例代碼詳細(xì)介紹的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.miracleart.cn)!



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

à quoi se réfère H5? Explorer le contexte à quoi se réfère H5? Explorer le contexte Apr 12, 2025 am 12:03 AM

H5Referstohtml5, apivotaltechnologyInwebdevelopment.1) html5introducesnewelementsandapisforrich, dynamicwebapplications.2) itsupp OrtsMultimeDiaHithoutPlugins, améliorant la réception detièmeaCrOsDevices.3) SemantelelementsImproveContentsTructureAndSeo.4) H5'sRespo

Questions d'entretien HTML5 Questions d'entretien HTML5 Sep 04, 2024 pm 04:55 PM

Questions d'entretien HTML5 1. Que sont les éléments multimédia HTML5 2. Qu'est-ce que l'élément canevas 3. Qu'est-ce que l'API de géolocalisation 4. Que sont les Web Workers

H5 est-il le même que HTML5? H5 est-il le même que HTML5? Apr 08, 2025 am 12:16 AM

"H5" et "HTML5" sont les mêmes dans la plupart des cas, mais ils peuvent avoir des significations différentes dans certains scénarios spécifiques. 1. "Html5" est une norme définie par W3C qui contient de nouvelles balises et API. 2. "H5" est généralement l'abréviation de HTML5, mais dans le développement mobile, il peut se référer à un cadre basé sur HTML5. Comprendre ces différences aide à utiliser ces termes avec précision dans votre projet.

H5 est-il un raccourci pour HTML5? Explorer les détails H5 est-il un raccourci pour HTML5? Explorer les détails Apr 14, 2025 am 12:05 AM

H5 n'est pas seulement l'abréviation de HTML5, il représente un écosystème de technologie de développement Web moderne plus large: 1. H5 comprend HTML5, CSS3, JavaScript et API et technologies connexes; 2. Il offre une expérience utilisateur plus riche, interactive et fluide et peut fonctionner de manière transparente sur plusieurs appareils; 3. à l'aide de la pile de technologie H5, vous pouvez créer des pages Web réactives et des fonctions interactives complexes.

H5 et HTML5: termes couramment utilisés dans le développement Web H5 et HTML5: termes couramment utilisés dans le développement Web Apr 13, 2025 am 12:01 AM

H5 et HTML5 se réfèrent à la même chose, à savoir HTML5. HTML5 est la cinquième version de HTML, apportant de nouvelles fonctionnalités telles que les balises sémantiques, la prise en charge multimédia, la toile et les graphiques, le stockage hors ligne et le stockage local, l'amélioration de l'expressivité et de l'interactivité des pages Web.

Comprendre le code H5: les principes fondamentaux de HTML5 Comprendre le code H5: les principes fondamentaux de HTML5 Apr 17, 2025 am 12:08 AM

HTML5 est une technologie clé pour créer des pages Web modernes, offrant de nombreux nouveaux éléments et fonctionnalités. 1. HTML5 introduit des éléments sémantiques tels que, etc., qui améliore la structure des pages Web et le référencement. 2. Prise en charge des éléments multimédias et des supports intégrés sans plug-ins. 3. Les formulaires améliorent les nouveaux types d'entrée et les propriétés de vérification, simplifiant le processus de vérification. 4. Offrez des fonctions de stockage hors ligne et locales pour améliorer les performances des pages Web et l'expérience utilisateur.

Que signifie H5? Que signifie H5? Apr 04, 2025 am 12:10 AM

H5 est l'abréviation de HTML5 et est la cinquième version de HTML. H5 améliore la structure et la sémantique des pages Web et présente de nouvelles fonctionnalités telles que des API vidéo, audio, dessin en toile et géolocalisation, rendant le développement de pages Web plus riche et plus efficace.

HTML5 et H5: comprendre l'usage commun HTML5 et H5: comprendre l'usage commun Apr 22, 2025 am 12:01 AM

Il n'y a pas de différence entre HTML5 et H5, qui est l'abréviation de HTML5. 1.HTML5 est la cinquième version de HTML, qui améliore les fonctions multimédias et interactives des pages Web. 2.H5 est souvent utilisé pour faire référence à des pages Web ou des applications mobiles basées sur HTML5, et convient à divers appareils mobiles.

See all articles