In meinem einfachen Textbereich wird kein horizontaler Balken angezeigt, wenn Text überläuft. Es wird Text für eine neue Zeile umgebrochen. Wie entferne ich den Zeilenumbruch und zeige die horizontale Leiste an, wenn der Text überläuft?
In meinem einfachen Textbereich wird kein horizontaler Balken angezeigt, wenn Text überläuft. Es wird Text für eine neue Zeile umgebrochen. Wie entferne ich den Zeilenumbruch und zeige die horizontale Leiste an, wenn der Text überläuft?
Antworten:
Textbereiche sollten nicht standardmäßig umbrochen werden, aber Sie können wrap = "soft" festlegen, um den Umbruch explizit zu deaktivieren:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
BEARBEITEN: Das Attribut "Wrap" wird nicht offiziell unterstützt. Ich habe es von der deutschen SELFHTML-Seite erhalten (eine englische Quelle ist hier ), die besagt, dass IE 4.0 und Netscape 2.0 es unterstützen. Ich habe es auch in FF 3.0.7 getestet, wo es wie angenommen funktioniert. Hier haben sich die Dinge geändert, SELFHTML ist jetzt ein Wiki und der englische Quelllink ist tot.
EDIT2: Wenn Sie sicher sein möchten, dass jeder Browser dies unterstützt, können Sie CSS verwenden, um das Wrap-Verhalten zu ändern:
Mit Cascading Style Sheets (CSS) können Sie den gleichen Effekt erzielen
white-space: nowrap; overflow: auto;
. Somit kann das Wrap-Attribut als veraltet angesehen werden.
Von hier aus (scheint eine ausgezeichnete Seite mit Informationen über Textbereich zu sein).
EDIT3: Ich bin nicht sicher, wann es sich geändert hat (laut den Kommentaren muss es um 2014 gewesen sein), aber es wrap
ist jetzt ein offizielles HTML5-Attribut, siehe w3schools . Die Antwort wurde entsprechend geändert.
white-space: pre;
(oder pre-line
/ pre-wrap
) hatte den gleichen wrap="off"
white-space: nowrap
padding
wrap="off"
ist nicht mehr gültig, ist jedoch sowohl für IE als auch für Edge erforderlich!
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
funktioniert auch, wenn Sie sich nicht für Leerzeichen interessieren, aber das möchten Sie natürlich nicht, wenn Sie mit Code arbeiten (oder eingerückten Absätzen oder Inhalten, bei denen absichtlich mehrere Leerzeichen vorhanden sein könnten) ... also bevorzuge ich pre
.
overflow-wrap: normal
(war word-wrap
in älteren Browsern) wird benötigt, falls ein Elternteil diese Einstellung geändert hat; Dies kann zu einem Umbruch führen, selbst wenn dieser festgelegt pre
ist.
auch - im Gegensatz zu der derzeit akzeptierten Antwort - Textfelder Sie wickeln oft standardmäßig. pre-wrap
scheint die Standardeinstellung in meinem Browser zu sein.
overflow-x: scroll
mit overflow: auto
. Die Bildlaufleisten reduzieren den verfügbaren Eingabebereich im Textbereich. Außerdem hat IE11 eine vertikale Bildlaufleiste unnötigerweise auf Ihre Weise gerendert, diese jedoch overflow: auto
behoben.
Die folgende CSS-basierte Lösung funktioniert für mich:
<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>
Ich habe einen Weg gefunden, mit all dem, was gleichzeitig funktioniert, einen Textbereich zu erstellen:
Es funktioniert gut auf:
Lassen Sie mich erklären, wie ich dazu komme: Ich habe das in Chrome Inspector integrierte Tool verwendet und Werte für CSS-Stile gesehen. Daher versuche ich diese Werte anstelle der normalen ... Versuch und Irrtum, bis ich sie auf ein Minimum reduziert habe und hier ist für jeden, der es will.
Im CSS-Bereich habe ich genau dies für Chrome, Firefox, Opera und Safari verwendet:
textarea {
white-space:nowrap;
overflow:scroll;
}
Im CSS-Bereich habe ich genau dies für IE verwendet:
textarea {
overflow:scroll;
}
Es war ein bisschen schwierig, aber es gibt das CSS.
Ein (x) HTML-Tag wie folgt:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
Und am Ende des <head>
Abschnitts ein JavaScript wie dieses:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
Das JavaScript dient dazu, den W3C-Validator XHTML 1.1 Strict zu übergeben, da das Wrap-Attribut nicht offiziell ist und daher kein (x) HTML-Tag direkt sein kann, aber die meisten Browser damit umgehen. Nach dem Laden der Seite wird dieses Attribut festgelegt.
Hoffe, dass dies auf mehr Browsern und Versionen getestet werden kann und jemandem hilft, es zu verbessern, und es für alle Versionen vollständig browserübergreifend macht.
Diese Frage scheint die beliebteste zum Deaktivieren von textarea
Wrap zu sein. Doch ab April 2017 Ich finde , dass IE 11 (11.0.9600) wird nicht deaktivieren Zeilenumbruch mit einem der oben genannten Lösungen.
Die einzige Lösung, die für IE 11 funktioniert, ist wrap="off"
. wrap="soft"
und / oder die verschiedenen CSS-Attribute wie white-space: pre
alter, bei denen IE 11 das Umschließen wählt, es aber immer noch irgendwo umschließt. Beachten Sie, dass ich dies mit oder ohne Kompatibilitätsansicht getestet habe . IE 11 ist ziemlich HTML 5-kompatibel, aber in diesem Fall nicht.
Um Linien zu erzielen, die ihre Leerzeichen behalten und von der rechten Seite abweichen, verwende ich:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
Glücklicherweise scheint dies auch in Chrome & Firefox zu funktionieren. Ich verteidige nicht die Verwendung von Pre-HTML 5 wrap="off"
, sondern sage nur, dass es für IE 11 erforderlich zu sein scheint.
Wenn Sie JavaScript verwenden können, ist Folgendes möglicherweise die derzeit portabelste Option (getestetes 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>
Es scheint keine tragbare CSS-Standardlösung zu geben:
wrap
Attribut ist nicht Standard
white-space: pre;
funktioniert nicht für Firefox 31 für textarea
. Geige , offene Feature-Anfrage .
Wenn Sie Javascript verwenden können, können Sie auch den ACE-Editor verwenden:
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>
Funktioniert wahrscheinlich mit ACE, da es keine verwendet, die nicht textarea
spezifiziert / inkohärent implementiert ist, aber nicht sicher ist, ob sie verwendet wird contenteditable
.