当文本溢出时,我的简单文本区域没有显示水平滚动条。它会为新行换行。那么,如何去掉自动换行并在文本溢出时显示水平滚动条?
textarea {
white-space: pre;
overflow-wrap: normal;
overflow-x: scroll;
}
white-space: nowrap
如果您不关心空格,也可以使用此属性,但是如果您正在处理代码(或缩进段落或可能有多个空格的任何内容),那么当然不希望出现这种情况...所以我更喜欢 pre
。
overflow-wrap: normal
( 旧版浏览器中为 word-wrap
) ,在父级元素更改了设置时需要使用,它可以使文本换行即使已经设置了 pre
。
另外 -- 与目前被接受的答案相反 -- 文本域通常会默认换行。 在我的浏览器上,pre-wrap
似乎是默认设置。
overflow: auto
替换overflow-x: scroll
。滚动条会减少文本区域中可用的输入空间。此外,IE11在您的方式下不必要地呈现了一个垂直滚动条,但是overflow: auto
修复了它。 - Sam<textarea name="nowrap" cols="30" rows="3" wrap="soft"></textarea>
编辑:官方不支持“wrap”属性。 我从德国SELFHTML页面获得了此信息(英文来源在这里),该页面称IE 4.0和Netscape 2.0支持它。 我还在FF 3.0.7中进行了测试,它可以正常工作。事情已经有所改变,SELFHTML现在是一个维基百科页面,英文来源链接已失效。
编辑2:如果你想确保每个浏览器都支持它,你可以使用CSS来更改包裹行为:
使用级联样式表(CSS),您可以通过
white-space: nowrap; overflow: auto;
实现相同的效果。 因此,可以将wrap属性视为过时。
来自这里(似乎是一个关于textarea的信息丰富的网页)。
编辑3:我不确定何时发生了更改(根据评论,必须是在2014年左右),但wrap
现在是官方HTML5属性,请参见w3schools。更改答案以匹配此信息。
white-space: pre;
(或者pre-line
/pre-wrap
)的效果与wrap="off"
相同(而white-space: nowrap
则无法对padding
进行限制)。 - philfreo以下基于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>
该方法可以在以下浏览器上使用:
下面我来解释一下如何实现这个效果:我使用了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严格标准,因为`wrap`属性不被官方支持,不能直接成为(x)HTML标签,但大多数浏览器都能处理它,所以在页面加载后设置该属性。
希望这段代码能够在更多的浏览器和版本上测试,并帮助有需要的人完善它,使其能够跨所有版本的浏览器。
这个问题似乎是禁用textarea
换行符的最普遍的一个。然而,截至2017年4月,我发现IE 11(11.0.9600)将不会使用上述任何解决方案来禁用换行符。
唯一适用于IE 11的解决方案是wrap="off"
。 wrap="soft"
和/或各种CSS属性,如white-space: pre
,可以改变IE 11选择换行的位置,但它仍然在某个地方换行。请注意,我已经测试过这个问题,在有或没有兼容性视图下都是如此。IE 11与HTML 5相当兼容,但在这种情况下却不是。
因此,为了获得保留空白并向右侧延伸的行,我正在使用:
<textarea style="white-space: pre; overflow: scroll;" wrap="off">
< p > 好在在Chrome和Firefox中似乎也能正常工作。我不是要为使用HTML 5之前的wrap="off"
辩护,只是说这似乎是IE 11所必需的。< /p >
如果您能使用JavaScript,以下可能是目前最具可移植性的选项(已测试Firefox 31,Chrome 36):
contenteditable="true"
的divhttp://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, open feature request。
此外,如果您可以使用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
。