2012-05-20 14 views
5

Sto provando a racchiudere il testo in un div utilizzando css e/o jQuery in modo tale che la linea di fondo sia la più lunga.jquery/css wrap text bottom up

così piuttosto che

__________ 
|this is | 
|text | 
|________| 

direbbe

__________ 
|this | 
|is text | 
|________| 

posso facilmente avvolgere il testo utilizzando

white-space: pre-wrap; 

Ma non riesco a trovare nulla che possa farmi fare Questo.

(un pensiero che ho avuto sarebbe invertire il testo, trovare dove la linea di confezionamento accade, applicare una <br/> negli stessi luoghi, con il testo che va in avanti .. ma non so come controllare dove la linea avvolge)

+0

Un duplicato più moderno è http://stackoverflow.com/questions/22423951/wrap-text-from-bottom-to-top. –

risposta

0

ho finito per prendere la rotta, di invertire, controllando dove le interruzioni di riga sono stati, e quindi inserendo di conseguenza. Sentitevi liberi di usare la mia funzione. Questa funzione accetta un elemento jQuery (con testo che già avvolge) e re-avvolge il suo testo verso l'alto.

function wrapUp(element){ 
    width = element.width(); 
    string = element.text().split(' '); 
    element.text(''); 
    reversed = string.reverse(); 
    var height = 0; 
    for (var i=0;i<reversed.length;i++){ 
     reversed[i] += ' '; 
     element.text(element.text()+reversed[i]); 
     if (height != element.height()){ 
      reversed.splice(i,0,"<br/>"); 
      i++; 
     } 
     height = element.height(); 
     console.log(element.height()); 
    } 
    element.html(reversed.reverse().join('')); 
} 
+1

Come stai testando le interruzioni di riga? – vol7ron

+0

Fondamentalmente ciò che questa funzione fa è prendere il contenitore, rimuoverne il contenuto, inserirli uno alla volta, iniziando dall'ultimo. Controlla se l'altezza del contenitore cambia dopo ogni inserto, dovunque l'altezza cambi ci deve essere un'interruzione di riga. Quindi ricorda dove devono andare le interruzioni di riga e le posiziona di conseguenza nel testo non invertito. – BananaNeil

1

il loro è un plugin jQuery chiamato bacon

Con questo si può disporre il testo in base alle proprie esigenze in qualsiasi forma desiderata, so che hai a che fare una roba su di esso, ma penso che possa aiutare.

$(".baconMe").bacon({ 
    'type' : 'bezier', 
    'c1' : { x : 10,  y : 0 }, 
    'c2' : { x : -115,  y : 170 }, 
    'c3' : { x : 35,  y : 340 }, 
    'c4' : { x : 15,  y : 480 }, 
    'align' : 'right' 
} 
+0

Mi spiace, ci ho provato, ma non ho potuto davvero farlo funzionare. – BananaNeil

+0

In primo luogo, non vedo come questo potrebbe funzionare per quello che sto cercando. Voglio che il testo si avvolga dal basso verso l'alto, lasciando la linea superiore più corta, non a una forma (non posso fare un caso speciale, perché questo testo potrebbe essere qualsiasi cosa). In secondo luogo, ho finito per capire come scrivere una risposta corretta, e l'ho pubblicata qui sotto. In terzo luogo, ho provato ad applicare una linea diritta con una pendenza negativa, ha reso il mio testo invisibile, ho provato a risolvere i problemi, ma non sapevo come si cercasse di lavorare (e la documentazione è sub-par), quindi ho rinunciato e ha scritto il mio. – BananaNeil