首页前端开发HTMLHTML5自定义元素播放焦点图动画的实现

HTML5自定义元素播放焦点图动画的实现

时间2024-01-25 02:42:35发布访客分类HTML浏览811
导读:收集整理的这篇文章主要介绍了HTML5自定义元素播放焦点图动画的实现,觉得挺不错的,现在分享给大家,也给大家做个参考。 这是一款基于HTML5的焦点图动画,它和其他焦点图不同的地方在于,它播放的不仅仅是图片,而是可以自定义控制的网...
收集整理的这篇文章主要介绍了HTML5自定义元素播放焦点图动画的实现,觉得挺不错的,现在分享给大家,也给大家做个参考。

这是一款基于HTML5的焦点图动画,它和其他焦点图不同的地方在于,它播放的不仅仅是图片,而是可以自定义控制的网页元素。它不仅在图片间切换有过渡动画效果,而且在切换时图片中的元素也将出现动画效果,比如图中的文字移动、打散、重新组合等。这款HTML5动画图片播放器算得上是高端大气上档次。

HTML代码

div class="parallax-bg" id="slider-wrap">
        div class="slider parallax-bg" id="slider">
               div class="slider-sections sandbox">
             section class="First">
                         img alt="Kendo UI" src="images/home-banner-1.png"/>
                         div class="text">
                              h2>
    SmartSITe Ver 2.2br />
    智能网站管理系统 /h2>
                              p class="copy">
    采用前后台完全分离技术,通过标签(支持标签循环嵌套、判断标签、自定义标签、文件循环嵌套等)加模板技术.全站生成纯静态页。/p>
                              p class="button">
    a href="#" onclick="_gaq.push(['_trackPageview', '#']);
    ">
    Download/a>
     a class="dimmed" onclick="_gaq.push(['_trackPageview', '#']);
    " href="#">
    Learn More/a>
    /p>
                         /div>
                    /section>
            section>
                         img src="images/dataviz-home-image-q2.png" alt="Kendo UI" />
                         div class="text" style="padding-top: 10px;
    ">
                              h2>
    企业网站管理系统/h2>
                              p class="copy">
    单页面、单页面索引、新闻、产品展示、下载、友情链接、网上商城,在线支付、配送、支付方式管理、广告等模块。/p>
                              p class="button">
    a href="#" onclick="_gaq.push(['_trackPageview', '#']);
    ">
    Download/a>
     a class="dimmed" onclick="_gaq.push(['_trackPageview', '#']);
    " href="#">
    Learn More/a>
    /p>
                         /div>
                    /section>
            section>
                         img src="images/home_banner_web-q2.png" alt="Kendo UI" />
                         div class="text">
                              h2>
    智能移动网站管理系统/h2>
                              p class="copy">
    基于jquery.mobile、HTML5技术框架,前后台完全分离,采用标签加模板技术,全站生成纯静态页。/p>
                              p class="button">
    a href="#" onclick="_gaq.push(['_trackPageview', '#']);
    ">
    Download/a>
     a class="dimmed" onclick="_gaq.push(['_trackPageview', '#']);
    " href="#">
    Learn More/a>
    /p>
                         /div>
                    /section>
               /div>
          /div>
          a class="slider-prev" href="javascript: void(0)">
    ?/a>
     a class="slider-next" href="javascript: void(0)">
    ?/a>
    

CSS代码:

这里列出的是这个焦点图相关的核心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: 'lucida sans',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代码:下面是这个焦点图插件的代码。/*** @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 === 'background-position')            {
                    name = 'backgroundPosition';
            }
            if (name !== 'backgroundPosition' || !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, 'backgroundPositionX', force) + ' ' + oldCurCSS(elem, 'backgroundPositionY', force);
        }
    ;
    }
        var oldAnim = $.fn.aniMATE;
    $.fn.animate = function (PRop)    {
        if ('background-position' in prop)        {
                prop.backgroundPosition = prop['background-position'];
                delete prop['background-position'];
        }
        if ('backgroundPosition' in prop)        {
                prop.backgroundPosition = '(' + prop.backgroundPosition;
        }
            return oldAnim.apply(this, arguments);
    }
    ;
    function toArray(strg)    {
            strg = strg.replace(/left|top/g, '0px');
            strg = strg.replace(/right|bottom/g, '100%');
            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, 'backgroundPosition');
            if (!start)            {
    //Ff2 no inline-style fallback                start = '0px 0px';
            }
                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] + ' ' + 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'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='" + config.navigationClass + "' style='margin-left: -" + width/2 + "px;
     width: " + width + "px'>
    ";
        for (i = 0;
     i  count;
 i++) {
          html += "li>
    a " + (i === 0 ? "class='selected'" : "" ) + " href='#" + (i) + "'>
    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's a good idea to give different delays for the different elements        // if all have the same delay they'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'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'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'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'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'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'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' 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'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'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 );
下面是页面调用的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;
 }
    );
}
    );
    

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: Html5实现首页动态视频背景的示例...下一篇:使用Html5中的cavas画一面国旗猜你在找的html5相关文章 关于移动端h5开发相关内容总结2022-05-17html5教程-学表单的第二天2018-12-10html5教程-HTML5浏览器支持2018-12-10html5教程-HTML5智能表单2018-12-10html5教程-微信H5使用resLoader实现加载页效果2018-12-10html5教程-day01-初级-JS0-热身运动JS入门教程2018-12-10html5教程-html5shiv.js和respond.min.js2018-12-10html5教程-不同浏览器对于html5 audio标签和音频格式的兼容性2018-12-10html5教程-使用Html5实现手风琴案例2018-12-10html5教程-html5笔记2018-12-10 其他相关热搜词更多phpjavapython程序员load

若转载请注明出处: HTML5自定义元素播放焦点图动画的实现
本文地址: https://pptw.com/jishu/586046.html
Html5实现首页动态视频背景的示例代码 html5视频媒体标签video的使用方法及完整参数说明详解

游客 回复需填写必要信息