Ich habe das Internet weit und breit durchsucht und fand diesen Stackoverflow-Beitrag aufschlussreich. Ist es möglich, die Position von Bootstrap-Popovers basierend auf der Bildschirmbreite zu ändern? Ich habe meine Frage immer noch nicht beantwortet, wahrscheinlich aufgrund meines Problems, Position / Versatz zu verstehen.
Folgendes versuche ich zu tun. Ich möchte, dass die Twitter-Bootstap-Popover-Position RECHTS ist, es sei denn, das Hotspot-Popover wird außerhalb des Ansichtsfensters positioniert, und ich möchte, dass es LINKS positioniert wird. Ich erstelle eine iPad-Web-App mit Hotspots. Wenn Sie auf einen Hotspot klicken, werden Informationen angezeigt, aber ich möchte nicht, dass sie außerhalb des Ansichtsfensters angezeigt werden, wenn das horizontale Scrollen gesperrt ist.
Ich denke, es würde ungefähr so gehen:
$('.infopoint').popover({
trigger:'hover',
animation: false,
placement: wheretoplace
});
function wheretoplace(){
var myLeft = $(this).offset.left;
if (myLeft<500) return 'left';
return 'right';
}
Gedanken? Vielen Dank!
auto
dies je nach Seitenlayout und Inhalt, den Sie in das Popover einfügen, nicht immer einwandfrei funktioniert.left 515
&top 110
Für Bootstrap 3 gibt es
das ist einfacher. Standardmäßig ist es rechts, aber wenn sich das Element auf der rechten Seite des Bildschirms befindet, bleibt das Popover übrig. So sollte es sein:
quelle
Basierend auf der Dokumentation sollten Sie in der Lage sein,
auto
in Kombination mit der bevorzugten Platzierung zu verwenden, zauto left
http://getbootstrap.com/javascript/#popovers : "Wenn" auto "angegeben ist, wird das Popover dynamisch neu ausgerichtet. Wenn die Platzierung beispielsweise" auto left "ist, wird der Tooltip nach Möglichkeit links angezeigt es wird rechts angezeigt. "
Ich habe versucht, dasselbe zu tun, und dann festgestellt, dass diese Funktionalität bereits vorhanden ist.
quelle
viewport
wenn Sie nicht möchten, dass es basierend auf dem übergeordneten Element berechnet wird.Also habe ich einen Weg gefunden, dies effektiv zu tun. Für mein spezielles Projekt baue ich eine iPad-Website, damit ich genau wusste, wie hoch der Pixel-X / Y-Wert sein würde, um den Bildschirmrand zu erreichen. Ihre thisX- und thisY-Werte variieren.
Da die Popover ohnehin durch Inline-Styling platziert werden, greife ich einfach zu den linken und oberen Werten für jeden Link, um zu entscheiden, in welche Richtung das Popover gehen soll. Dies erfolgt durch Anhängen von HTML5-Datenwerten, die .popover () bei der Ausführung verwendet.
Kommentare / Verbesserungen sind willkommen, aber dies erledigt den Job, wenn Sie bereit sind, die Werte manuell einzugeben.
quelle
Die Antwort von bchhun brachte mich auf den richtigen Weg, aber ich wollte überprüfen, ob tatsächlich Platz zwischen der Quelle und dem Rand des Ansichtsfensters verfügbar ist. Ich wollte auch das Datenplatzierungsattribut als Präferenz mit geeigneten Fallbacks berücksichtigen, wenn nicht genügend Speicherplatz vorhanden war. Auf diese Weise würde "richtig" immer nach rechts gehen, es sei denn, es wäre nicht genügend Platz für das Popover vorhanden, um es beispielsweise auf der rechten Seite anzuzeigen. So habe ich damit umgegangen. Es funktioniert bei mir, aber es fühlt sich etwas umständlich an. Wenn jemand Ideen für eine sauberere und präzisere Lösung hat, würde mich das interessieren.
quelle
Sie können auch versuchen,
==> Ziel- / Quellposition im Ansichtsfenster abrufen
==> Überprüfen Sie, ob der Abstand von unten kleiner als Ihre QuickInfo-Höhe ist
==> Wenn der Abstand von unten kleiner als Ihre Tooltip-Höhe ist, scrollen Sie einfach die Seite nach oben
quelle
Sie können Auto bei der Datenplatzierung verwenden, z. B. Datenplatzierung = "Auto links". Es wird automatisch an Ihre Bildschirmgröße angepasst und die Standardplatzierung bleibt erhalten.
quelle
Zusätzlich zu Bchhuns großartiger Antwort können Sie dies tun, wenn Sie eine Absoulte-Positionierung wünschen
quelle
Ich habe mein Problem in AngularJS wie folgt gelöst:
Mit dieser Funktion wird die Position des Bootstrap-Popover-Floats basierend auf der Elementposition an die beste Position verschoben.
quelle
quelle
Sie können dieses auch ausprobieren, wenn Sie es an fast allen Stellen auf der Seite benötigen.
Sie können es allgemein konfigurieren und dann einfach verwenden.
Auf diese Weise können Sie auch HTML-Elemente und alles verwenden, was Sie wollen :)
Zusatz
Aktualisieren
Wenn Sie das Popup nach dem Klicken möchten, können Sie die JS-Option folgendermaßen
trigger: "click"
ändern:Sie können es auch in HTML-Anzeigen
data-trigger="click"
wie folgt anpassen:Ich denke, es wird mehr orientierter Code und wiederverwendbarer und für alle hilfreicher sein :).
quelle