I have a jsfiddle here.jQuery UI-Tooltip mit einem Bild hat eine falsche Position
$(document).tooltip({
items : "[title]",
position : {
my: "left+35",
at: "right+10",
collision: "flipfit"
},
content : function() {
var cache = new Date().getTime();
// Uncomment this next line and the tooltip looks correct after the image is retrieved
//cache = "";
return '<img src="https://g.foolcdn.com/editorial/images/225916/getty-apple_large.jpg?' + cache + ' width="600">';
},
open : function(event, ui) {
ui.tooltip.css("min-width", "600px");
}
});
Ich versuche, einen Tooltip mit einem Bild im Inneren zu zeigen. Es scheint, dass die Position des Tooltips falsch ist, wenn der Browser das Bild zum ersten Mal aufruft. Die Kollisionslogik "flipfit" scheint nicht korrekt angewendet zu werden und der Tooltip ist außerhalb des sichtbaren Bereichs falsch positioniert.
Wenn Sie meine JavaScript Zeile Kommentar-, dass der Browser eine Cache-Version des Bildes zu verwenden, ermöglicht es, der Tooltip-Displays in der gewünschten Position, vollständig sichtbar.
Gibt es eine Möglichkeit JQuery UI zu bekommen, um richtig die Position zu berechnen? Ich habe viele Dinge ausprobiert und kann es nicht zum Laufen bringen.
Die Positionierung, die ich habe, ist gültig. Laut der JQuery-Dokumentation "Jede Dimension kann auch Offsets in Pixel oder Prozent enthalten, z. B. rechts + 10 oben-25%". Ich denke du hast Recht, dass die Position seltsam ist, weil das Bild noch nicht geladen wurde. Ich denke, die Lösung wäre, das Bild irgendwie vorzuladen, bevor die Tooltip-Positionsberechnungen vorgenommen werden. Oder geben Sie dem Tooltip einen Tipp über die Größe, die es am Ende haben wird. –
Bringen Sie das Bild mit dem Rest der Seite ein. Stellen Sie es so ein, dass es nicht sichtbar ist. Sobald Sie die Seite fertig geladen haben, wird sie zwischengespeichert und kann leicht geöffnet werden. Jedes Element sollte sein eigenes haben, damit es geladen werden kann. Entfernen Sie auch den Cache-Code, den Sie dort haben. – trevster344
Ich habe darüber nachgedacht, aber es könnte über 100 verschiedene Bilder auf der Seite geben und sie sind ziemlich groß, also wollte ich sie nicht vorladen. Ich wollte, dass sie nur abgerufen werden, wenn jemand über einem kleinen Miniaturbild schwebte. Ich habe eine andere Lösung gefunden und sie veröffentlicht. Vielen Dank. –