mon textarea simple ne montre pas une barre horizontale lorsque le texte déborde. Il enveloppe le texte pour une nouvelle ligne. Alors, comment puis-je supprimer le retour automatique à la ligne et afficher la barre horizontale lorsque le texte déborde?
Textareas ne devrait pas encapsuler par défaut, mais vous pouvez définir wrap = "soft" pour désactiver explicitement wrap:
<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
EDIT: l'attribut "wrap" n'est pas officiellement supporté. Je l’ai obtenue de la page allemande SELFHTML (une source anglaise est ici ) qui indique IE 4.0 et Netscape 2.0 le prennent en charge. Je testé dans FF 3.0.7 où il fonctionne comme supposé. Les choses ont changé ici, SELFHTML est maintenant un wiki et le lien source en anglais est mort.
EDIT2: Si vous voulez être sûr que tous les navigateurs le prennent en charge, vous pouvez utiliser CSS pour changer le comportement du wrap:
En utilisant les feuilles de style en cascade (CSS), vous pouvez obtenir le même effet avec
white-space: nowrap; overflow: auto;
. Ainsi, l'attribut wrap peut être considéré comme obsolète.
From here (semble être une excellente page avec des informations sur textarea).
EDIT3: Je ne sais pas quand cela a changé (selon les commentaires, ça devait être autour de 2014), mais wrap
est maintenant un attribut HTML5 officiel, voir w3schools . Changé la réponse pour correspondre à cela.
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
fonctionne également si vous ne vous souciez pas des espaces, mais bien sûr, vous ne le souhaitez pas si vous travaillez avec du code (ou des paragraphes en retrait ou tout contenu où il pourrait y avoir délibérément plusieurs espaces) ... alors je préfère pre
.
overflow-wrap: normal
(était Word-wrap
dans les anciens navigateurs) est nécessaire au cas où un parent aurait modifié ce paramètre; cela peut provoquer un retour à la ligne même si pre
est défini.
aussi - contrairement à la réponse actuellement acceptée - textareas do souvent envelopper par défaut. pre-wrap
semble être la valeur par défaut de mon navigateur.
La solution basée sur CSS suivante fonctionne pour moi:
<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>
J'ai trouvé un moyen de faire une textarea avec tout ce travail en même temps:
Cela fonctionne bien sur:
Permettez-moi de vous expliquer comment y arriver: j'utilisais Chrome et j'ai vu les valeurs sur les styles CSS, alors j'essaie ces valeurs plutôt que les normales ... essai et erreurs jusqu'à ce que Je l'ai réduit au minimum et le voici pour tous ceux qui le souhaitent.
Dans la section CSS, je l’utilisais pour Chrome, Firefox, Opera et Safari:
textarea {
white-space:nowrap;
overflow:scroll;
}
Dans la section CSS, j'ai utilisé ceci pour IE:
textarea {
overflow:scroll;
}
C'était un peu délicat, mais il y a le CSS.
Une balise (x) HTML comme celle-ci:
<textarea id="myTextarea" rows="10" cols="15"></textarea>
Et à la fin du <head>
section un JavaScript comme ceci:
window.onload=function(){
document.getElementById("myTextarea").wrap='off';
}
Le code JavaScript permet au validateur du W3C de passer XHTML 1.1 Strict, car l’attribut wrap n’est pas officiel et ne peut donc pas être une balise HTML (x) directement, mais la plupart des navigateurs le gèrent. Après le chargement de la page, il définit cet attribut.
J'espère que cela pourra être testé sur plus de navigateurs et de versions, aider quelqu'un à l'améliorer et le rendre totalement cross-browser pour toutes les versions.
Cette question semble être la plus populaire pour désactiver textarea
wrap. Cependant, à partir d'avril 2017, je constate que IE 11 (11.0.9600) va pas désactiver le retour à la ligne automatique avec l'une des solutions ci-dessus.
La solution seulement qui fonctionne pour IE 11 est wrap="off"
. wrap="soft"
et/ou les différents attributs CSS tels que white-space: pre
alter where IE 11 choisit d’emballer mais il encapsule quelque part. Notez que j’ai testé avec ou sans vue de compatibilité. IE 11 est assez compatible HTML 5, mais pas dans ce cas.
Ainsi, pour obtenir des lignes qui conservent leurs espaces et sortent du côté droit, j'utilise:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
Heureusement, cela semble fonctionner dans Chrome & Firefox aussi. Je ne défends pas l’utilisation du pré-HTML 5 wrap="off"
, en disant simplement que cela semble être nécessaire pour IE 11.
Si vous pouvez utiliser JavaScript, les options suivantes pourraient être l'option la plus portable à ce jour (testé avec 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>
Il semble n'y avoir aucune solution CSS portable standard:
wrap
l'attribut n'est pas standard
white-space: pre;
ne fonctionne pas avec Firefox 31 pour textarea
. Fiddle , demande de fonctionnalité ouverte .
De plus, si vous pouvez utiliser Javascript, vous pouvez également utiliser l'éditeur 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>
Fonctionne probablement avec ACE car il n’utilise pas de textarea
qui est sous-spécifié/implémenté de manière incohérente, mais ne sait pas s’il utilise contenteditable
.