2017-04-19 18 views
0

I have a jsfiddle hereイメージを含むjQuery UIのツールチップに間違った位置があります

$(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"); 
     } 
    }); 

イメージが入ったツールチップを表示しようとしています。ブラウザが最初にイメージを取得している場合、ツールチップの位置が間違っているようです。 「フリップフィット」コリジョンロジックが正しく適用されていないようで、ツールチップが表示可能領域外に正しく配置されていません。

enter image description here

ブラウザは、所望の位置にツールチップが表示されたら、完全に可視画像のキャッシュされたバージョンを使用することができます私のJavaScriptの行のコメントを解除した場合。

enter image description here

jQueryのUIが正しく位置を計算するために取得する方法はありますか?私は多くのことを試みましたが、それを働かせることはできません。

答えて

1

解決策が見つかりました。画像のコンテンツの幅と高さの両方を指定すると、位置が正しくなります。高さは私が示すかもしれないさまざまなイメージの間で変わるので、私は前に幅を使用していました。これにより、位置が適切に計算されます。さまざまなサイズの画像を補正するために、画像にcss "object-fit:cover"を追加しました。これは、固定されたツールチップウインドウのサイズに合わせて中央揃えとトリミングを可能にします。

var image = 'https://g.foolcdn.com/editorial/images/225916/getty-apple_large.jpg'; 

    $(document).tooltip({ 
     items : "[title]", 
     position : { 
      my: "left+35", 
      at: "right+10", 
      collision: "flipfit" 
     }, 
     content : function(event, ui) { 
       return '<img src="' + image + '" width="600" height="400" style="object-fit: cover;">'; 
     }, 
     open : function(event, ui) { 
      ui.tooltip.css("min-width", "600px"); 
     } 
    }); 
0

私はあなたのポジショニングが無効かもしれないと信じています。私は今までleft center, left top, left bottom, right top, right center, right bottom, top right, top center, top left, bottom left, bottom center, bottom rightのような有効な値を知っていました。

コンテナと画像は、設置する前にスクリーンから外して見えるようにしてください。適切なサイズに達していない目に見えない要素を配置すると、あなたに奇妙な位置が与えられます。あなたのイメージがロードされていることを確認してから、コンテナを表示してから配置してください。

+0

私が持っているポジショニングは有効です。 JQueryの文書によると、「各次元にはピクセル単位またはパーセント単位のオフセットも含めることができます(たとえば、右上+上位10%〜25%)。画像がまだ読み込まれていないので、ポジションが奇妙だとあなたは正しいと思います。私は、ツールヒント位置の計算が行われる前に、何らかの形でイメージをプリロードするという解決策があると思います。または、何とかjqueryのツールチップにサイズについてのヒントを与えて、それが終了するようにします。 –

+0

ページの残りの部分で画像を取り込みます。表示されないように設定します。ページのロードが完了すると、キャッシュされ、簡単にポップアップできます。各項目は独自のものを持つ必要があります。また、そこにあるキャッシュコードも削除してください。 – trevster344

+0

私はそれについて考えましたが、ページ上に100以上の異なる画像があり、サイズがかなり大きいので、あらかじめロードしたくありませんでした。誰かが小さなサムネイル画像の上にぶら下がっている場合にのみ、それらを検索したかったのです。別の解決策を見つけて投稿しました。ありがとう。 –

関連する問題