2016-01-08 24 views
6

Używam stylu white-space: pre-wrap na elemencie HTML <pre>, aby umożliwić przerywanie linii, gdy są dłuższe niż szerokość okna przeglądarki.wskazuje automatyczne łamanie wiersza w białej przestrzeni: element pre-wrap

Niestety te linie przerywane również wyglądają tak, jakby miały kreskę na końcu; użytkownik nie może zobaczyć, czy był to automatyczny podział linii.

Czy istnieje sposób pokazania na końcu linii, że owijanie się dzieje (tak jak emacs ma znak \), lub na początku zawijanych linii, że są kontynuacją poprzedniej linii (np. z )?

Kopiowanie & wklejanie nie powinno kopiować znaków kontynuacji.


Example code:

<pre style="white-space: pre-wrap">for i in range(19): selwidth=5; selheight=1000; image = gimp.image_list()[0];posx=initx+i*90; pdb.gimp_image_select_polygon(image, 2, 8, [posx, 0, posx+selwidth, 0, posx+selwidth-selheight, selheight, posx-selheight, selheight]);</pre > 

Preferred rendering, z na początku linii uzupełniających:

for i in range(19): selwidth=5; selheight=1000; image = gimp.image_list()[0];posx= 
→initx+i*90; pdb.gimp_image_select_polygon(image, 2, 8, [posx, 0, posx+selwidth, 0, 
→posx+selwidth-selheight, selheight, posx-selheight, selheight]); 
+1

Nie można dodać symbole na łamanie wierszy wygenerowanych przez zawijania tekstu, ale można dodać '' https://jsfiddle.net/rv5d5omL/3/ → lub '↳' https: // jsfiddle.net/rv5d5omL/4/na każdym wierszu linii '\ n' –

+0

To^^. I w odniesieniu do * ".. kopiowanie i wklejanie nie powinno kopiować znaków kontynuacji ..." * - można użyć odmiany kodu podanego przez @ Mi-Creativity - https://jsfiddle.net/abhitalks/e9v8audb/ - To nie będzie zawierało znaków podczas wklejania do kopii, a także programowo "textContent" nie będzie zawierało tych, utrzymując je w czystości. – Abhitalks

+0

to jest to samo @Abhitalks skrzypce ale z symbolem strzałki "return" i ostatnim symbolem usuniętym https://jsfiddle.net/e9v8audb/4/ –

Odpowiedz

2

Pre ma zachować tekst, jak to zostało wpisane. Pomogło to zachować wiersze i teksty specjalne, tak jak powinny być postrzegane, a nie formatowane przez przeglądarkę. Myślę, że większość ludzi będzie w stanie powiedzieć, że linia tekstu jest opakowana w Pre z białymi znakami: pre-wrap, ponieważ wyglądałoby to tak: Pięć małych małp skaczących na łóżku , {{line break}} Jeden odpadł i uderzył głową. {{Linia przerwa}} Mama nazywa lekarz i Lekarz powiedział, {{linia przerwa}} „Nigdy więcej małpy skoki na łóżku!”. {{Linia przerwa}}

Jeśli poszedł z prosto HTML <p> to będzie wyglądać jak trzeba było wpisane w swoim przykładzie i <pre> ze spacjami. pre-wrap będzie wyglądała przestrzeń, jak masz to wpisane

Aby pokolorować końce każdej linii można spróbować umieścić <span> i dać to CSS do koloru i rozmiaru lub zrobić <span> na całym zdaniu, nadając mu kolor tła CSS.

+0

Niestety, nie wyjaśniłem, że mówię o kodzie źródłowym. Zaktualizowałem przykład. – cweiske

2

AFAIK nie z CSS, zamiast tego możesz zastąpić każdy nowy wiersz 2 nowymi liniami, tak aby nowe linie zostały rozróżnione podczas zawijania tekstu, aby to zrobić ręcznie wprowadź dwa - lub więcej - linie podziału wierszy <br> s dla każdej nowej linii lub jeśli możesz używać JavaScript wówczas można wymienić każdy średnik ; - ponieważ warunkiem przykładem w tej kwestii jest kod gdzie każda linia kończy się; - zastąpić go ;\n\n - lub ;<br><br> zamiast - stąd będzie ona rozpoznana.

JS Fiddle

var pre = document.getElementsByTagName('pre')[0], 
 
    preHTML = pre.innerHTML; 
 

 
pre.innerHTML = preHTML.replace(/;\s*/g, ";\n\n");
<pre style="white-space: pre-wrap">for i in range(19): selwidth=5; selheight=1000; image = gimp.image_list()[0];posx=initx+i*90; pdb.gimp_image_select_polygon(image, 2, 8, [posx, 0, posx+selwidth, 0, posx+selwidth-selheight, selheight, posx-selheight, selheight]);</pre >

+0

Następnie kod źródłowy z normalnym podziałem wierszy ma nagle podwójną wysokość, co nie jest tym, czego chcę. – cweiske