Html Textarea元素只有在到达空格或制表符时才会换行。这很好,直到用户键入一个looooooooooooooooooooo足够的单词。我正在寻找一种严格执行换行符的方法(例如:即使它导致“loooooooooooo \ n ooooooooooong”)。
我发现最好的是在每个字母后面添加一个零宽度的unicode空格,但这会破坏复制和粘贴操作。有人知道更好的方法吗?
注意:我在这里指的是“textarea”元素(即:与文本输入行为类似的元素) - 而不仅仅是一个普通的旧文本块。
答案 0 :(得分:12)
CSS设置word-wrap:break-word
和text-wrap:unrestricted
似乎是CSS 3功能。祝你在当前的实现中找到一种方法。
答案 1 :(得分:8)
word-wrap: break-word
也可能会产生预期的效果。答案 2 :(得分:4)
以textarea宽度大小打破长词:
1)适用于现代浏览器:
textarea { word-break: break-all; }
2)对于IE8兼容性添加:
textarea { -ms-word-break: break-all; }
https://msdn.microsoft.com/en-us/library/ms531184%28v=vs.85%29.aspx
3)添加IE11兼容性黑客:
Internet Explorer 11 word wrap is not working
@media all and (-ms-high-contrast:none) {
*::-ms-backdrop, textarea { white-space: pre; }
}
此代码正常运行:
-IE 11,Chrome 51,Firefox 46(Windows 7);
-IE 8,Chrome 49,Firefox 18(Windows Xp);
-Edge 12.10240,Opera 30(Windows 10);
答案 3 :(得分:2)
至少
支持非标准元素wbrFirefox,http://developer.mozilla.org/En/HTML/Element
Internet Explorer,http://msdn.microsoft.com/en-us/library/ms535917(VS.85).aspx
和Opera。
答案 4 :(得分:0)
我测试了< wbr> ,​ 和& shy; 技术。这三个在IE 7,Firefox 3和Chrome中运行良好。
唯一没有破坏复制/粘贴的是< wbr> 标记。
答案 5 :(得分:0)
根据我的测试,只有Firefox在当前浏览器中具有所描述的行为。所以我想你最好的办法就是等待即将发布的Firefox 3.1来解决你的问题:)
答案 6 :(得分:0)
最优雅的方法是使用wrap="soft"
来换行整个单词,或者使用wrap="hard"
来换行或wrap="off"
来换行,尽管最后一个wrap="off"
是通常不需要自动浏览器自动使用,就好像wrap="off"
一样
实施例:
<textarea name="tbox" cols="24" rows="4" wrap="soft"></textarea>