Heim > Web-Frontend > js-Tutorial > Hauptteil

Tutorial zur Implementierung des jQuery Marquee Seamless Scrolling Plug-Ins

小云云
Freigeben: 2018-01-22 17:38:49
Original
1826 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich ein Plug-In vorgestellt, das ein nahtloses Scrollen auf Basis von jQuery implementiert. Es ist sehr gut und hat Referenzwert. Ich hoffe, es kann jedem helfen.

Basierend auf jQuery wurde ein Plug-in, das Marquee Seamless Scrolling implementiert, auf git.oschina.net veröffentlicht. Die Demo wird später aktualisiert (aktualisiert auf http://git.oschina. net/mqycn/jQueryMarquee ).

Der Code lautet wie folgt:


/**
 * 类库名称:jQuery.marquee
 * 实现功能:基于 jquery 实现的 marquee 无缝滚动插件
 * 作者主页:http://www.miaoqiyuan.cn/
 * 联系邮箱:mqycn@126.com
 * 使用说明:http://www.miaoqiyuan.cn/p/jquery-marquee
 * 最新版本:http://git.oschina.net/mqycn/jQueryMarquee
*/
jQuery.fn.extend({
  marquee : function(opt, callback){
    opt = opt || {};
    opt.speed = opt.speed || 30;
    opt.direction = opt.direction || 'left';
    opt.pixels = opt.pixels || 2;
    switch( opt.direction ){
      case "left":
      case "right":
        opt.weight = "width";
        opt.margin = "margin-left";
        opt.tpl = &#39;<table><tr><td>[TABLE]</td><td>[TABLE]</td></tr></table>&#39;;
        break;
      case "top":
      case "bottom":
        opt.weight = "height";
        opt.margin = "margin-top";
        opt.tpl = &#39;<table><tr><td>[TABLE]</td></tr></tr><td>[TABLE]</td></tr></table>&#39;;
        break;
      default:
        throw Error("[jQuery.marquee.js] Options.direction Error!");
    }
    switch( opt.direction ){
      case "left":
      case "top":
        opt.addon = -1;
        break;
      case "right":
      case "bottom":
        opt.addon = 1;
        break;
      default:
        throw Error("[jQuery.marquee.js] Options.direction Error!");
    }
    callback = typeof callback == "function" ? callback : function(){};
    //设置宽度
    $(this).each(function(){
      if( this.control ){
        clearInterval(this.control);
      } else {
        //如果第一次执行,初始化代码
        $(this)
          .data(opt.weight, opt.weight == &#39;width&#39; ? $(this).find("table").width() : $(this).find("table").height())
          .width($(this).data(opt.weight) * 2)
          .html(opt.tpl.replace(/\[TABLE\]/ig, $(this).html()))
          .mouseover(function(){
            $(this).data("pause", true);
          }).mouseout(function(){
            $(this).data("pause", false);
          });
      }
      this.control = setInterval((function(){
        if( $(this).data("pause") ){
          return;
        }
        var _margin = parseInt($(this).css(opt.margin)) + opt.addon * opt.pixels;
        if( opt.addon == -1 && _margin + $(this).data(opt.weight) < 0 ){
          _margin = 0;
        }else if( opt.addon == 1, _margin > 0 ){
          console.log(_margin < 0,$(this).data(opt.weight));
          _margin = -1 * $(this).data(opt.weight);
        }
        $(this).css(opt.margin, _margin + "px");
        callback.bind(this)();
      }).bind(this), opt.speed);
    });
    return $(this);
  }
});
Nach dem Login kopieren

Bei Verwendung unter IE9 müssen Sie vorher den folgenden Code hinzufügen:


/**
 * IE8插件(解决 function 不支持 bind 的问题),非原创
*/
if (!Function.prototype.bind) {
  Function.prototype.bind = function(oThis) {
    if (typeof this !== "function") {
      throw new TypeError("[jQuery.marquee.ie8] Caller is not a function");
    }
    var aArgs = Array.prototype.slice.call(arguments, 1),
      fToBind = this,
      fNOP = function() {},
      fBound = function() {
        return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
      };
    fNOP.prototype = this.prototype;
    fBound.prototype = new fNOP();
    return fBound;
  };
}
Nach dem Login kopieren

Es gibt drei optionale Parameter und eine Rückrufmethode.

Richtung, Bewegungsrichtung: Unterstützung links: links rechts: rechts oben: oben unten: unten

Pixel, die Anzahl der Pixel, die jedes Mal bewegt werden

Geschwindigkeit, zwei Bewegungen Die Anzahl der vorherigen Intervalle (Millisekunden)

Die Aufrufmethode ist wie folgt:


$("scroll-a").marquee();
$("scroll-b").marquee({direction:&#39;top&#39;});
$("scroll-c").marquee({direction:&#39;top&#39;,pixels:2,speed:30});
$("scroll-d").marquee({direction:"top",pixels:2,speed:30}, function(){
  console.log("执行了一次");
});
Nach dem Login kopieren

Verwandte Empfehlungen:

WeChat-Applet-Komponenten-Marquee-Instanzfreigabe

Detaillierte Einführung in das Marquee-Tag in HTML

Zusammenfassung der Anwendungsbeispiele des Marquee Markieren Sie JS, um Marquee-Scrolling zu implementieren. Detaillierte Erläuterung der Effektbeispiele

Das obige ist der detaillierte Inhalt vonTutorial zur Implementierung des jQuery Marquee Seamless Scrolling Plug-Ins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!