mój prosty obszar tekstowy nie wyświetla poziomego paska, gdy tekst się przepełnia. Zawija tekst w nowym wierszu. Jak więc usunąć zawijanie słów i wyświetlić poziomy pasek, gdy tekst się przepełnia?
EDYCJA: Atrybut „wrap” nie jest oficjalnie obsługiwany. Dostałem go od strony SELFHTML german (angielski źródło jest tutaj ), który mówi, IE 4.0 i Netscape 2.0 wspierać. Przetestowałem go również w FF 3.0.7, gdzie działa zgodnie z oczekiwaniami. Tutaj sytuacja się zmieniła, SELFHTML jest teraz wiki, a angielski link do źródła nie działa.
EDIT2: Jeśli chcesz mieć pewność, że każda przeglądarka go obsługuje, możesz użyć CSS, aby zmienić zachowanie zawijania:
Korzystając z kaskadowych arkuszy stylów (CSS), możesz osiągnąć ten sam efekt za pomocą
white-space: nowrap; overflow: auto;. W związku z tym atrybut zawijania można uznać za nieaktualny.
Od tutaj (wydaje się być doskonałym strona z informacjami o textarea).
EDIT3: Nie jestem pewien, kiedy to się zmieniło (zgodnie z komentarzami, musiało to być około 2014 roku), ale wrapteraz jest to oficjalny atrybut HTML5, patrz w3schools . Zmieniono odpowiedź, aby pasowała do tego.
Atrybut „wrap” działa w przeglądarce Firefox 3.6, ale nie jest prawidłowym HTML5. Jednak rozwiązanie CSS nie działa, tak jakby „white-space: nowrap” było ignorowane.
Clint Pachl,
9
white-space: pre;(lub pre-line/ pre-wrap) miał taki sam wpływ jak wrap="off"u mnie ( white-space: nowrapale nie szanowałem padding)
philfreo
5
@ClintPachl Właściwie wrapjest poprawny HTML5 ... jego ustawienia są teraz "hard"i "soft"( ref )
white-space: nowrapdziała również, jeśli nie przejmujesz się białymi znakami, ale oczywiście nie chcesz tego, jeśli pracujesz z kodem (lub akapitami z wcięciem lub dowolną treścią, w której celowo może być wiele spacji) ... więc wolę pre.
overflow-wrap: normal(było word-wrapw starszych przeglądarkach) jest potrzebne na wypadek, gdyby jakiś rodzic zmienił to ustawienie; może powodować zawijanie, nawet jeślipre jest ustawione.
także - w przeciwieństwie do obecnie przyjętej odpowiedź - pola tekstowe mają często zawijać domyślnie. pre-wrapwydaje się być domyślnym ustawieniem w mojej przeglądarce.
W przypadku FF 20 nadal potrzebujesz wrap = "off" w tagu html textarea! Ta technologia to takie niekonsekwentne bzdury.
Lawrence Dol
3
+1 za dostarczenie rozwiązania CSS i wskazanie, że
obszary tekstowe
1
Ach, wygląda na to, że w Firefoksie pojawiła się prośba o funkcję od 2001 roku, ale z niektórymi niedawnymi (2014) komentarzami dotyczącymi zachowania Chrome autorstwa programisty Ehsana Akhgari: bugzilla.mozilla.org/show_bug.cgi?id=82711 . Idź i zagłosuj!
Osobiście uważam, że lepiej jest zastąpić overflow-x: scrollz overflow: auto. Paski przewijania zmniejszają dostępną przestrzeń do wpisywania w obszarze tekstowym. Ponadto IE11 niepotrzebnie renderował pionowy pasek przewijania, ale overflow: autonaprawił go.
Sam
19
U mnie działa następujące rozwiązanie oparte na CSS:
<html><head><styletype='text/css'>
textarea {white-space: nowrap;overflow: scroll;overflow-y: hidden;overflow-x: scroll;overflow: -moz-scrollbars-horizontal;}</style></head><body><form><textarea>This is a long line of text for testing purposes...</textarea></form></body></html>
Znalazłem sposób na stworzenie obszaru tekstowego z tym wszystkim działającym w tym samym czasie:
Z poziomym paskiem przewijania
Obsługa tekstu wielowierszowego
Tekst się nie zawija
Działa dobrze na:
Chrome 15.0.874.120
Firefox 7.0.1
Opera 11,52 (1100)
Safari 5.1 (7534.50)
IE 8.0.6001.18702
Pozwól, że wyjaśnię, jak do tego doszedłem: korzystałem ze zintegrowanego narzędzia Chrome Inspector i widziałem wartości w stylach CSS, więc próbuję tych wartości zamiast normalnych ... prób i błędów, dopóki nie zredukuję ich do minimum i tutaj to jest dla każdego, kto tego chce.
W sekcji CSS użyłem tylko tego dla Chrome, Firefox, Opera i Safari:
JavaScript służy do tego, aby walidator W3C przekazywał XHTML 1.1 Strict, ponieważ atrybut wrap nie jest oficjalny i dlatego nie może być bezpośrednio tagiem (x) HTML, ale większość przeglądarek obsługuje go, więc po załadowaniu strony ustawia ten atrybut.
Mam nadzieję, że można to przetestować na większej liczbie przeglądarek i wersji i pomóc komuś ulepszyć to i sprawić, że będzie to w pełni cross-browser dla wszystkich wersji.
+1 .wrap = 'off' to magia, która załatwiła sprawę w FF 14.0.1 ... Dzięki.
Shanimal,
Wydaje się, że JavaScript nie działa w przeglądarce Safari 5.0.6 (ostatnia wersja PPC), mimo że w kodzie HTML można użyć wrap = "off".
.wrap jest tym, co zrobił dla mnie, używając Chrome. Użyłem go również w połączeniu z brakiem zawijania w css.
MineAndCraft12
wrap = 'off' powoduje, że IE zachowuje się jak inne przeglądarki.
Rand Scullard
4
To pytanie wydaje się być najbardziej popularne przy wyłączaniu textareazawijania. Jednak od kwietnia 2017 r. Uważam, że IE 11 (11.0.9600) nie wyłącza zawijania słów żadnym z powyższych rozwiązań.
Tylko rozwiązanie, które działa na IE 11 jest wrap="off". wrap="soft"i / lub różne atrybuty CSS, takie jak white-space: prealter, w których IE 11 wybiera zawijanie, ale nadal gdzieś zawija. Zauważ, że przetestowałem to z lub bez widoku zgodności . IE 11 jest całkiem kompatybilny z HTML 5, ale nie w tym przypadku.
Tak więc, aby uzyskać linie, które zachowują swoje białe spacje i wychodzą z prawej strony, używam:
Na szczęście wydaje się, że działa to również w Chrome i Firefox. Nie bronię używania pre-HTML 5 wrap="off", po prostu mówię, że wydaje się to być wymagane dla IE 11.
Prawdopodobnie działa z ACE, ponieważ nie używa textareażadnego, który jest niedookreślony / niespójny zaimplementowany, ale nie jest pewien, czy jest używany contenteditable.
Odpowiedzi:
Obszary tekstowe nie powinny domyślnie zawijać, ale możesz ustawić wrap = "soft", aby jawnie wyłączyć zawijanie:
EDYCJA: Atrybut „wrap” nie jest oficjalnie obsługiwany. Dostałem go od strony SELFHTML german (angielski źródło jest tutaj ), który mówi, IE 4.0 i Netscape 2.0 wspierać. Przetestowałem go również w FF 3.0.7, gdzie działa zgodnie z oczekiwaniami.Tutaj sytuacja się zmieniła, SELFHTML jest teraz wiki, a angielski link do źródła nie działa.EDIT2: Jeśli chcesz mieć pewność, że każda przeglądarka go obsługuje, możesz użyć CSS, aby zmienić zachowanie zawijania:
Od tutaj (wydaje się być doskonałym strona z informacjami o textarea).
EDIT3: Nie jestem pewien, kiedy to się zmieniło (zgodnie z komentarzami, musiało to być około 2014 roku), ale
wrap
teraz jest to oficjalny atrybut HTML5, patrz w3schools . Zmieniono odpowiedź, aby pasowała do tego.źródło
white-space: pre;
(lubpre-line
/pre-wrap
) miał taki sam wpływ jakwrap="off"
u mnie (white-space: nowrap
ale nie szanowałempadding
)wrap
jest poprawny HTML5 ... jego ustawienia są teraz"hard"
i"soft"
( ref )wrap="off"
nie jest już ważny, ale jest wymagany zarówno dla IE, jak i Edge!white-space: nowrap
działa również, jeśli nie przejmujesz się białymi znakami, ale oczywiście nie chcesz tego, jeśli pracujesz z kodem (lub akapitami z wcięciem lub dowolną treścią, w której celowo może być wiele spacji) ... więc wolępre
.overflow-wrap: normal
(byłoword-wrap
w starszych przeglądarkach) jest potrzebne na wypadek, gdyby jakiś rodzic zmienił to ustawienie; może powodować zawijanie, nawet jeślipre
jest ustawione.także - w przeciwieństwie do obecnie przyjętej odpowiedź - pola tekstowe mają często zawijać domyślnie.
pre-wrap
wydaje się być domyślnym ustawieniem w mojej przeglądarce.źródło
overflow-x: scroll
zoverflow: auto
. Paski przewijania zmniejszają dostępną przestrzeń do wpisywania w obszarze tekstowym. Ponadto IE11 niepotrzebnie renderował pionowy pasek przewijania, aleoverflow: auto
naprawił go.U mnie działa następujące rozwiązanie oparte na CSS:
źródło
Znalazłem sposób na stworzenie obszaru tekstowego z tym wszystkim działającym w tym samym czasie:
Działa dobrze na:
Pozwól, że wyjaśnię, jak do tego doszedłem: korzystałem ze zintegrowanego narzędzia Chrome Inspector i widziałem wartości w stylach CSS, więc próbuję tych wartości zamiast normalnych ... prób i błędów, dopóki nie zredukuję ich do minimum i tutaj to jest dla każdego, kto tego chce.
W sekcji CSS użyłem tylko tego dla Chrome, Firefox, Opera i Safari:
W sekcji CSS użyłem tylko tego dla IE:
To było trochę trudne, ale jest CSS.
Tag (x) HTML, taki jak ten:
A na końcu
<head>
sekcji JavaScript jak ten:JavaScript służy do tego, aby walidator W3C przekazywał XHTML 1.1 Strict, ponieważ atrybut wrap nie jest oficjalny i dlatego nie może być bezpośrednio tagiem (x) HTML, ale większość przeglądarek obsługuje go, więc po załadowaniu strony ustawia ten atrybut.
Mam nadzieję, że można to przetestować na większej liczbie przeglądarek i wersji i pomóc komuś ulepszyć to i sprawić, że będzie to w pełni cross-browser dla wszystkich wersji.
źródło
To pytanie wydaje się być najbardziej popularne przy wyłączaniu
textarea
zawijania. Jednak od kwietnia 2017 r. Uważam, że IE 11 (11.0.9600) nie wyłącza zawijania słów żadnym z powyższych rozwiązań.Tylko rozwiązanie, które działa na IE 11 jest
wrap="off"
.wrap="soft"
i / lub różne atrybuty CSS, takie jakwhite-space: pre
alter, w których IE 11 wybiera zawijanie, ale nadal gdzieś zawija. Zauważ, że przetestowałem to z lub bez widoku zgodności . IE 11 jest całkiem kompatybilny z HTML 5, ale nie w tym przypadku.Tak więc, aby uzyskać linie, które zachowują swoje białe spacje i wychodzą z prawej strony, używam:
Na szczęście wydaje się, że działa to również w Chrome i Firefox. Nie bronię używania pre-HTML 5
wrap="off"
, po prostu mówię, że wydaje się to być wymagane dla IE 11.źródło
Jeśli możesz używać JavaScript, poniższa opcja może być obecnie najbardziej przenośną opcją (przetestowany Firefox 31, Chrome 36):
contenteditable="true"
http://jsfiddle.net/cirosantilli/eaxgesoq/
Wydaje się, że nie ma standardowego, przenośnego rozwiązania CSS:
wrap
atrybut nie jest standardowywhite-space: pre;
nie działa w przeglądarce Firefox 31 dlatextarea
. Fiddle , otwarta prośba o funkcję .Ponadto, jeśli możesz używać JavaScript, równie dobrze możesz użyć edytora ACE:
http://jsfiddle.net/cirosantilli/bL9vr8o8/
Prawdopodobnie działa z ACE, ponieważ nie używa
textarea
żadnego, który jest niedookreślony / niespójny zaimplementowany, ale nie jest pewien, czy jest używanycontenteditable
.źródło