Ich fand das eine interessante Sache für meinen Blog und machte einige Spuren und Fehler. wenn jemand ein Jquery-Plugin daraus machen könnte?! Bilder und Text sollten innerhalb eines div. Sehen Sie, wie es funktioniert aquí .
1. die Wörter haben keine Koordinaten, also muss man jedes Wort mit einem html-Tag umschließen. Dadurch wird der Text sehr viel länger!!!
var text=$('div#text').text();
var arr=text.split(" ");
for(var i=0;i<arr.length;i++){
arr[i]="<span id='t'>"+arr[i]+"</span>";
}
text=arr.join(" ");
$('div#text').html(function(){return text;});
2. platzieren Sie Ihr Bild. 3. die Koordinaten und die Größe der div für das Bild und deklarieren einige vars.
var temp=$("div#img");
var pos=temp.offset();
var imgleft=parseInt(pos.left);
var imgtop=parseInt(pos.top);
var imgwidth=temp.width();
var imgheight=temp.height();
var latesttop=$("div#text").offset().top;
var spanleft,spantop,spanwidth,spanheight,latestleft,latestwidth;
Gehen Sie durch jede Wortmarke. Finden Sie das Wort, das in das Bild hineinragt. Berechnen Sie den Abstand zwischen dem Ende des Wortes und dem rechten Rand des Bildes und platzieren Sie ein Div mit der entsprechenden Breite als Platzhalter.
$("span#t").each(function(index){
pos=$(this).offset();
spanleft=parseInt(pos.left);
spantop=parseInt(pos.top);
spanwidth=$(this).width();
spanheight=$(this).height();
if(spantop+spanheight>imgtop
&& spantop<imgtop+imgheight
&& spanleft+spanwidth>imgleft
&& spanleft<imgleft+imgwidth){
if(latesttop!=spantop){
latestleft=0;
latestwidth=0;
}
var spacewidth=15+imgwidth+imgleft-latestleft-latestwidth;
$(this).before("<div id='t' style='display:inline-block;width:"+spacewidth+"px'></div>");
}
latesttop=spantop;
latestleft=spanleft;
latestwidth=spanwidth;
});
5. nach Beendigung der Arbeit den Text aus den Zeilenumbrüchen entfernen.
$('span#t').replaceWith(function(){
return $(this).contents();
});