2017-03-30 6 views
0

Ich verwende intro.js, um eine Tour meiner Website einzurichten, und ich möchte die Standard-Platzierung der QuickInfo (wenn nicht an ein Element angefügt) in der Nähe von die Seite statt der vertikalen Mitte.Ändern der Standard-intro.js-Tooltip-Platzierung

Es sieht nicht so aus, als gäbe es eine Option, um es direkt zu setzen, aber gibt es eine Möglichkeit, das CSS zu ändern? (oder durch Bearbeiten der Quelle, obwohl dies eine Art letzter Ausweg ist).

Antwort

1

Ich musste etwas ähnliches tun. Nicht elegant, aber es funktioniert.

In der API-Dokumentation gibt es eine onafterchange Methode. Geben Sie ihr eine Callback-Funktion und sie wird jedes Mal ausgelöst, wenn ein Schritt angezeigt wird.

Wenn die QuickInfo ein Zielelement enthält, enthält das Argument des Rückrufs dieses Element. Wenn der Tooltip kein Element enthält, enthält das Argument ein Element mit der Klasse introjsFloatingElement. Sie müssen also nur nach dem Vorhandensein dieser Klasse für dieses Element suchen. Wenn dies der Fall ist, können Sie die Stile der Tooltip-Elemente anpassen.

var help = introJs(); 
help.onafterchange(function(targetEl){ 
    targetEl = jQuery(targetEl); 

    // check if it's a floating tooltip (not attached to an element) 
    if(targetEl.hasClass('introjsFloatingElement')){ 

     // adjust the position of these elements 
     jQuery('.introjs-tooltipReferenceLayer').offset({top : 120}); 
     jQuery('.introjs-tooltip').css({ 
      opacity: 1, 
      display: 'block', 
      left: '50%', 
      top: '50%', 
      'margin-left': '-186px', 
      'margin-top': '-91px' 
     }); 
     jQuery('.introjs-helperNumberLayer').css({ 
      opacity: 1, 
      left: '-204px', 
      top: '-109px' 
     }); 
    } 
}); 

// add your steps 
// ... 

help.start(); 

Hinweis:

  • Ich versuchte zunächst onbeforechange, aber das hat nicht funktioniert. Nicht sicher warum.
  • Zuerst habe ich versucht, die introjs-tooltipReferenceLayer Element nur, aber die geschachtelte Elemente (introjs-helperNumberLayer und introjs-Tooltip) nicht richtig positioniert auf der ersten Anzeige einzustellen. Ich musste diese Elemente auf nachfolgenden Displays überprüfen, um die richtigen Stylings zu erhalten.
  • Getestet mit intro.js 2.5.0. Elementklassen sind nicht Teil der API-Spezifikation, daher weiß ich nicht, wie zukunftssicher diese Lösung ist.
+0

Danke, überprüfen Sie die Klasse und dann ist es eine gute Idee, es mit 'onafterchange' zu ​​setzen. Ich hatte es etwas bearbeitet, indem ich das Quellen-CSS bearbeitete, aber das ist schöner. – ropeladder

0

Ich schaute in die Dokumentation intro.js. Sie sollten diese Codezeile einfach zu Ihrem Skript hinzufügen können.

introJs().setOption("tooltipPosition", "top"); 
+0

Leider scheint diese Option nur die Standardposition für Tooltips relativ zu dem Element festzulegen, an das sie angehängt sind. Es scheint keine Auswirkungen auf die Platzierung eines Tooltips zu haben, der nicht an etwas angebracht ist. – ropeladder

+0

Entschuldigung, das hat nicht funktioniert. Vielleicht können Sie denselben Befehl verwenden, um 'tooltipClass' zu setzen und die Position im CSS zu ändern. Aber das funktioniert nur, wenn Sie 'setOption' für jeden einzelnen Tooltipp verwenden können. –

+0

Danke für die zweite Idee, aber es funktioniert auch nicht. Sie können 'tooltipClass' unabhängig voneinander mit dem' steps' Array ([siehe hier] (https://github.com/usablica/intro.js/blob/master/example/programmamm/index.html)) setzen, aber das tut es nicht Funktioniert nicht für Positionseinstellungen, da das JavaScript intro.js jede benutzerdefinierte Klassenpositionierung mit 'style' Tags überschreibt. – ropeladder