CSS: как я могу заставить длинную строку (без пробелов) быть обернутой в XUL и / или HTML
У меня длинная строка (последовательность ДНК). Он не содержит пробелов. например:
ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA
каким будет селектор css, чтобы заставить этот текст быть обернутым в html:textarea или в xul: textbox
14 ответов
для элементов блок:
<textarea style="width:100px; word-wrap:break-word;">
ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</textarea>
вложенные элементы:
<span style="width:100px; word-wrap:break-word; display:inline-block;">
ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</span>
место нулевой ширины пространства в точках, где вы хотите разрешить перерывы. Пространство нулевой ширины -​
в HTML. Например:
ACTGATCG​AGCTGAAG​CGCAGTGC​GATGCTTC​GATGATGC
вот некоторые очень полезные ответы:
как предотвратить длинные слова от нарушения моего div?
чтобы сэкономить ваше время, это можно решить с помощью 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;
для меня это работает.
<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. Чтобы покрыть несоответствия браузера, вы должны объявить его несколькими способами. Поэтому просто поместите строку looooong в некоторый элемент уровня блока (например, 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) использовать 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/ с некоторыми дополнительными исследованиями, которые можно найти там.
на word-wrap:break-word;
чтобы работать на меня, я должен был убедиться, что display
был установлен до block
, и что ширина была установлена на элементе. В Safari он должен был иметь p
тег и width
пришлось установить в ex
.
Если вы используете PHP, то функция wordwrap хорошо работает для этого: http://php.net/manual/en/function.wordwrap.php
решение CSS word-wrap: break-word;
Не кажется согласованным во всех браузерах.
другие языки на стороне сервера имеют аналогичные функции-или могут быть построены вручную.
вот как работает функция PHP wordwrap:
$string = "ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA";
$wrappedstring = wordwrap($string,50,"<br>",true);
это обертывает строку в 50 символов с тегом
. Параметр 'true' заставляет строку быть разрезанной.
в случае, когда таблица не имеет фиксированного размера, ниже строка работала для меня:
style="width:110px; word-break: break-all;"
использовать <wbr>
tag:
ACTGATCG<wbr>AGCTGAAG<wbr>CGCAGTGC<wbr>GATGCTTC<wbr>GATGATGC
Я думаю, что это лучше, чем использовать нулевой ширины пространства ​
что может вызвать проблемы при копировании текста.
$string = "ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA";
$wrappedstring = html_entity_decode (wordwrap ($string, 50,"
", true));
это правильный код