у моєї простої текстової області не відображається горизонтальна смужка, коли текст переповнюється. Він обгортає текст для нового рядка. Тож як я можу видалити обгортання слів та відобразити горизонтальну смужку, коли текст переповнюється?
у моєї простої текстової області не відображається горизонтальна смужка, коли текст переповнюється. Він обгортає текст для нового рядка. Тож як я можу видалити обгортання слів та відобразити горизонтальну смужку, коли текст переповнюється?
Відповіді:
Textareas не має завершуватися за замовчуванням, але ви можете встановити wrap = "soft", щоб явно відключити обгортання:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
EDIT: Атрибут "wrap" офіційно не підтримується. Я отримав це з німецької сторінки SELFHTML (англійське джерело тут ), де написано, що IE 4.0 і Netscape 2.0 підтримують її. Я також перевірив його в FF 3.0.7, де він працює, як передбачалося. Тут все змінилося, SELFHTML зараз є вікі, а посилання на англійське джерело - мертве.
EDIT2: Якщо ви хочете бути впевнені, що кожен браузер підтримує його, ви можете використовувати CSS, щоб змінити поведінку обгортання:
Використовуючи каскадні таблиці стилів (CSS), ви можете досягти такого ж ефекту і з
white-space: nowrap; overflow: auto;
. Таким чином, атрибут wrap можна вважати застарілим.
Від тут (здається, відмінна сторінка з інформацією про текстовому).
EDIT3: Я не впевнений, коли він змінився (згідно з коментарями, мабуть, був у 2014 році), але wrap
зараз це офіційний атрибут HTML5, дивіться w3schools . Змінили відповідь, щоб відповідати цьому.
white-space: pre;
(або pre-line
/ pre-wrap
) вплинув так само, як і wrap="off"
на мене (тоді як white-space: nowrap
не поважав padding
)
wrap="off"
більше не діє, проте це вимога як для IE, так і для Edge!
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
також працює, якщо вам не байдуже пробіл, але, звичайно, ви не хочете, якщо ви працюєте з кодом (або з відступом абзаців або будь-якого вмісту, де навмисно може бути кілька пробілів) ... тому я вважаю за краще pre
.
overflow-wrap: normal
(був word-wrap
у старих браузерах) потрібен у випадку, якщо хтось із батьків змінив це налаштування; це може спричинити обгортання, навіть якщоpre
воно встановлено.
також - в відміну від прийнятого в даний час відповіді - прокручуваний робити часто загорнути за замовчуванням. pre-wrap
здається, за замовчуванням у моєму браузері.
overflow-x: scroll
на overflow: auto
. Панелі прокрутки зменшують доступний простір для набору тексту в області тексту. Крім того, IE11 надав вертикальну смугу прокрутки без зайвих зусиль, але overflow: auto
зафіксував її.
Наступне рішення на базі CSS працює для мене:
<html>
<head>
<style type='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>
Я знайшов спосіб зробити textarea, щоб все це працювало одночасно:
Він добре працює на:
Дозвольте мені пояснити, як мені дійти до цього: я використовував інтегрований інструмент інспектора Chrome і бачив значення в стилях CSS, тому я намагаюся ці значення, а не звичайні ... пробні та помилки, поки я не звели до мінімуму, і ось це для тих, хто цього хоче.
У розділі CSS я використовував саме це для Chrome, Firefox, Opera та Safari:
textarea {
white-space:nowrap;
overflow:scroll;
}
У розділі CSS я використовував саме це для IE:
textarea {
overflow:scroll;
}
Це було трохи хитро, але є CSS.
(X) тег HTML на зразок цього:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
І наприкінці <head>
розділу такий JavaScript:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
JavaScript призначений для того, щоб валідатор W3C пройшов XHTML 1.1 Strict, оскільки атрибут wrap не є офіційним і, таким чином, не може бути безпосередньо тегом HTML, але більшість браузерів обробляє його, тому після завантаження сторінки він встановлює цей атрибут.
Сподіваємось, що це можна перевірити на більшій кількості браузерів та версій, а також допомогти комусь покращити його та зробить його повністю перехресним браузером для всіх версій.
Це питання видається найпопулярнішим для відключення textarea
обгортання. Однак станом на квітень 2017 року я вважаю, що IE 11 (11.0.9600) не відключить обертання слів із будь-яким із перерахованих вище рішень.
Тільки рішення , яке робить роботу для IE 11 є wrap="off"
. wrap="soft"
та / або різні атрибути CSS, такі як white-space: pre
alter, де IE 11 вирішує обернути, але він все ще десь завертається. Зауважте, що я перевірив це з переглядом сумісності або без нього . IE 11 - це досить сумісний HTML 5, але не в цьому випадку.
Таким чином, для досягнення ліній, які зберігають пробіли та виходять з правого боку, я використовую:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
На щастя це, здається, працює і в Chrome & Firefox. Я не захищаю використання попереднього HTML 5 wrap="off"
, просто кажу, що, здається, потрібно IE 11.
Якщо ви можете використовувати JavaScript, наступний варіант може бути найбільш портативним (перевірений Firefox 31, Chrome 36):
contenteditable="true"
http://jsfiddle.net/cirosantilli/eaxgesoq/
<style>
div#editor {
white-space: pre;
word-wrap: normal;
overflow-x: scroll;
}
<style>
<div contenteditable="true"></div>
Здається, немає стандартного портативного рішення CSS:
wrap
атрибут не є стандартним
white-space: pre;
не працює для Firefox 31 для textarea
. Fiddle , запит на відкриту функцію .
Крім того, якщо ви можете використовувати Javascript, ви можете також використовувати редактор ACE:
http://jsfiddle.net/cirosantilli/bL9vr8o8/
<script src="http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js"></script>
<div id="editor">content</div>
<script>
var editor = ace.edit('editor')
editor.renderer.setShowGutter(false)
</script>
Ймовірно, працює з ACE, оскільки він не використовує textarea
жодного, який не вказано / неузгоджено реалізовано, але не впевнений, чи використовується contenteditable
.