2012-05-20 2 views
5

J'essaye d'emballer du texte dans un div en utilisant css et/ou jQuery de sorte que la ligne du bas soit la plus longue.jquery/css wrap text bottom up

donc plutôt que

__________ 
|this is | 
|text | 
|________| 

il dirait

__________ 
|this | 
|is text | 
|________| 

Je peux facilement envelopper le texte en utilisant

white-space: pre-wrap; 

Mais je ne peux pas trouver tout ce qui pourrait me laisser faire ce.

(une pensée que je devrais serait d'inverser le texte, trouver où l'enroulement de ligne arrive, appliquez un <br/> aux mêmes endroits, avec le texte en avant .. mais je ne sais pas vérifier où la ligne s'enroule)

+0

Une copie plus moderne est http://stackoverflow.com/questions/22423951/wrap-text-from-bottom-to-top. –

Répondre

0

Je fini par prendre la route, d'inverser, vérifier où les sauts de ligne ont été, puis de les insérer en conséquence. N'hésitez pas à utiliser ma fonction. Cette fonction accepte un élément jQuery (avec du texte qui s'enroule déjà) et réenveloppe le texte vers le haut.

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

Comment testez-vous les sauts de ligne? – vol7ron

+0

Fondamentalement, ce que cette fonction fait, c'est prendre le conteneur, supprime son contenu, les place dans un à la fois, en commençant par le dernier. Il vérifie si la hauteur du conteneur change après chaque insertion, là où la hauteur change, il doit y avoir un saut de ligne. Donc, il se souvient où les sauts de ligne doivent aller, et les place en conséquence dans le texte non-inversé. – BananaNeil

1

Leur est un plug-in dans jquery appelé bacon

Avec cela, vous pouvez envelopper le texte selon vos besoins en toute forme que vous voulez, je sais que vous devez faire des choses sur elle, mais je pense que cela peut vous aider.

$(".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

Désolé, j'ai essayé, mais je n'arrivais vraiment pas à le faire fonctionner. – BananaNeil

+0

Tout d'abord, je ne vois pas comment cela pourrait fonctionner pour ce que je cherche. Je veux que le texte passe de bas en haut, en laissant la ligne du haut la plus courte, pas une forme (je ne peux pas faire un cas particulier, parce que ce texte pourrait être quelque chose). Deuxièmement, j'ai fini par trouver un moyen d'écrire une bonne réponse, et je l'ai posté ci-dessous. Troisièmement, j'ai essayé d'appliquer une ligne droite avec une pente négative, cela a rendu mon texte invisible, j'ai essayé de dépanner, mais je ne savais pas comment il essayait de fonctionner (et la documentation est en dessous), donc j'ai abandonné et a écrit le mien. – BananaNeil