我有一个长字符串(代表DNA序列),它不含任何空格字符。
例如:
ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA
如何编写CSS选择器,使得文本被包装在html:textarea
或xul:textbox
中?
对于块级元素:
<textarea style="width:100px; word-wrap:break-word;">
ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</textarea>
对于行内元素:
<span style="width:100px; word-wrap:break-word; display:inline-block;">
ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</span>
overflow-wrap
,但word-wrap
已得到广泛实现。 - Ciro Santilli OurBigBook.comoverflow-wrap: 'anywhere'
。 - cyclingLinguist在希望允许换行的位置插入零宽度空格。 HTML中的零宽度空格是​
。例如:
ACTGATCG​AGCTGAAG​CGCAGTGC​GATGCTTC​GATGATGC
<wbr>
标签,它具有提供可选换行机会的相同目的。 - justisb\s
(空白字符)不匹配零宽度空格。如果您想要移除它们,需要显式地编写 /\u200B/g
或类似的代码。请参考 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes。 - Neal Ehardt这里有一些非常有用的答案:
为了节省时间,这可以通过css解决:
white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP printers */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
word-wrap: break-word; /* IE */
word-break: break-all;
word-break: break-all;
是我唯一一个有效的选择。 - Stanword-break: break-all;
! - Lonnie Best-hp-
! - i336_对我来说,这个有效。
<td width="170px" style="word-wrap:break-word;">
<div style="width:140px;overflow:auto">
LONGTEXTGOESHERELONGDIVGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESHERELONGDIVLONGTEXTLONGTEXT
</div>
</td>
您也可以在一个 div 内使用另一个 div,而不是 td
。我使用了 overflow:auto
,因为它可以在我的 Opera 和 IE 浏览器中都显示所有文本。
我认为你无法使用CSS来实现这个功能。相反,在字符串中的常规“单词长度”处插入HTML软连字符:
ACTGATCG­AGCTGAAG­CGCAGTGC­GATGCTTC­GATGATGC­TGACGATG
这将在文本末尾显示连字符,作为换行时的一部分,这可能是您想要的,也可能不是。
请注意,Safari似乎无论如何都会在<textarea>
中换行长字符串,而Firefox则不会。
使用CSS方法强制换行没有空格的字符串。有三种方法:
1)使用CSS white-space属性。为了覆盖浏览器不一致性,您必须声明多种方式。因此,只需将您的长字符串放入某些块级元素(例如div、pre、p)中,并为该元素提供以下CSS:
some_block_level_tag {
white-space: pre; /* CSS 2.0 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3.0 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP Printers */
word-wrap: break-word; /* IE 5+ */
}
2)使用Compass的force-wrap mixin。
3)我也在研究这个问题,我认为这个方法可能也可以(但是我需要更全面地测试浏览器支持):
.break-me {
word-wrap: break-word;
overflow-wrap: break-word;
}
当没有适当的方法插入特殊字符时,我使用 CSS 作为我的解决方法:
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
在这里找到: http://kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/ 并可以在那里找到一些额外的研究。
该链接提供了有关使用CSS实现单词换行和连字符的详细信息,以便优化文本的阅读体验。在我使用 word-wrap:break-word;
时,我必须确保元素的 display
属性设置为 block
,并且宽度已经被设定。在Safari浏览器中,它必须有一个 p
标签,并且宽度必须以 ex
单位设定。
使用 <wbr>
标签:
ACTGATCG<wbr>AGCTGAAG<wbr>CGCAGTGC<wbr>GATGCTTC<wbr>GATGATGC
我认为这比使用零宽度空格​
更好,因为当你复制文本时可能会出现问题。
在表格大小不固定的情况下,以下代码对我有效:
```style="width:110px; word-break: break-all;"