2009-01-31 20 views
151

में लपेटने के लिए एक लंबी स्ट्रिंग (बिना किसी खाली के) को कैसे मजबूर कर सकता हूं मेरे पास एक लंबी स्ट्रिंग (एक डीएनए अनुक्रम) है। इसमें कोई सफेद जगह नहीं है। जैसे:सीएसएस: मैं एक्सयूएल और/या एचटीएमएल

ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA 

क्या सीएसएस चयनकर्ता इस पाठ के लिए मजबूर होगा एक html में लिपटे होने के लिए: पाठ क्षेत्र या एक xul में: पाठ बॉक्स

+13

विडंबना यह है कि स्ट्रिंग ओवरफ़्लो में स्ट्रिंग नहीं टूटती है ... – splattne

+1

मुझे ईमानदारी से उम्मीद है कि आपका विषय इस अनुक्रम से क्लोन नहीं किया जा सकता है ... :) –

उत्तर

223

ब्लॉक तत्वों के लिए

<textarea style="width:100px; word-wrap:break-word;"> 
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
</textarea> 
इनलाइन के लिए

तत्व

<span style="width:100px; word-wrap:break-word; display:inline-block;">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</span> 
+0

यह केवल आईई, सफारी और एफएफ 3.1 (अल्फा) में समर्थित है। । –

+0

क्या आपने कोल्स विशेषता (गैर-सीएसएस) की कोशिश की है? – heeen

+0

ने अंतिम एफएफ के साथ अपने समाधान का परीक्षण किया। ठीक काम किया। – Pierre

12

मुझे नहीं लगता कि आप इसे सीएसएस के साथ कर सकते हैं। इसके बजाय, नियमित रूप से 'शब्द लंबाई' स्ट्रिंग साथ में, एक HTML नरम हायफ़न सम्मिलित करें:

ACTGATCG&shy;AGCTGAAG&shy;CGCAGTGC&shy;GATGCTTC&shy;GATGATGC&shy;TGACGATG 

इस लाइन, जहां यह लपेटता के अंत में एक हाइफन प्रदर्शित करेगा, जो या नहीं हो सकता है कि तुम क्या चाहते हैं।

नोट सफारी फ़ायरफ़ॉक्स के विपरीत, <textarea> में लंबी स्ट्रिंग को लपेटने लगता है।

+0

वाह, इसके बारे में भी नहीं पता था। साफ! –

+0

मुझे इसके बारे में पता नहीं था। डबल साफ! – Karl

95

zero-width spaces उन स्थानों पर रखें जहां आप ब्रेक की अनुमति देना चाहते हैं। एचटीएमएल में शून्य-चौड़ाई वाली जगह &#8203; है। उदाहरण के लिए:

ACTGATCG&#8203;AGCTGAAG&#8203;CGCAGTGC&#8203;GATGCTTC&#8203;GATGATGC

+4

अच्छा सुझाव, मैंने आज कुछ नया सीखा है, धन्यवाद! –

+2

इस समाधान के लिए धन्यवाद। किसी तालिका के अंदर काम करने के लिए ऐसा कुछ कठिन समय हो रहा था, और यह समाधान केवल एकमात्र है जिसे मैंने आईई, फ़ायरफ़ॉक्स और क्रोम में काम किया है। – Farinha

+1

+1, यह बेहतर काम करता है क्योंकि इसमें अधिक मामलों को शामिल किया गया है, भले ही सवाल एक और विशेष मामले के लिए था। – montrealist

18

मेरे लिए यह काम करता है,

<td width="170px" style="word-wrap:break-word;"> 
    <div style="width:140px;overflow:auto"> 
    LONGTEXTGOESHERELONGDIVGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESHERELONGDIVLONGTEXTLONGTEXT 
    </div> 
</td> 

तुम भी td की बजाय किसी दूसरे div के अंदर एक div उपयोग कर सकते हैं। मैंने overflow:auto का उपयोग किया, क्योंकि यह मेरे ओपेरा और आईई ब्राउज़र दोनों में सभी टेक्स्ट दिखाता है।

+0

मैंने इसे के साथ किया और यह बहुत अच्छा काम किया! धन्यवाद! –

+0

यह मेरे लिए काम नहीं किया। मुझे "वर्ड-रैप" प्रॉपर्टी को div में ले जाना है और "अतिप्रवाह" संपत्ति को हटा देना है। इस परिवर्तन के साथ, काम करता है। – danigonlinea

5

word-wrap:break-word; के लिए मेरे लिए काम करने के लिए, मुझे यह सुनिश्चित करना था कि displayblock पर सेट किया गया था, और चौड़ाई तत्व पर सेट की गई थी। सफारी में, इसे p टैग होना था और width को ex में सेट करना था।

3

आप PHP का उपयोग कर रहे हैं तो WordWrap समारोह इस के लिए अच्छी तरह से काम करता है: http://php.net/manual/en/function.wordwrap.php

सीएसएस समाधान word-wrap: break-word; सभी ब्राउज़र में अनुरूप होना प्रतीत नहीं होता है।

अन्य सर्वर-साइड भाषाओं में समान कार्य होते हैं - या हाथ निर्मित किए जा सकते हैं।

यहाँ कैसे पीएचपी WordWrap समारोह काम करता है:

$string = "ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA"; 

$wrappedstring = wordwrap($string,50,"&lt;br&gt;",true); 

यह एक <br> टैग के साथ 50 अक्षरों में स्ट्रिंग गिर्द घूमती है। 'सत्य' पैरामीटर स्ट्रिंग को काटने के लिए मजबूर करता है।

+0

धन्यवाद..इसने – noobcode

+0

काम किया है आप शून्य-चौड़ाई वाली जगहों को सम्मिलित करने के लिए रेमी के समाधान के साथ इस समाधान को मिश्रित कर सकते हैं: wordwrap ($ longtext, 5, "​", सत्य); –

10

कोई स्ट्रिंग लपेटने के लिए एक सीएसएस विधि का उपयोग करें जिसमें कोई सफेद-स्पेस न हो। तीन विधियां:

1) सीएसएस व्हाइट-स्पेस प्रॉपर्टी का उपयोग करें। ब्राउज़र असंगतताओं को कवर करने के लिए, आपको इसे कई तरीकों से घोषित करना होगा। तो बस अपनी looooong स्ट्रिंग कुछ ब्लॉक स्तर तत्व में डाल दें (उदा।

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 from Compass का उपयोग करें:, div, पूर्व, पी) और उस तत्व निम्नलिखित सीएसएस दे।

3) मैं तो बस के रूप में भी अच्छी तरह से इस में देख रहा था और मुझे लगता है कि हो सकता है काम (लेकिन मैं) और अधिक पूरी तरह से ब्राउज़र समर्थन का परीक्षण करने की जरूरत है:

.break-me { 
    word-wrap: break-word; 
    overflow-wrap: break-word; 
} 

संदर्भ: wrapping content

+0

हां, # 3 सभी आधुनिक ब्राउज़रों और यहां तक ​​कि पुराने आईई 6 + में भी काम करता है। – Graeck

+1

# 3 केवल तभी काम करता है जब शब्दों से तोड़ने के अवसर हैं। एक अत्यधिक लंबी स्ट्रिंग नहीं टूटती है (क्रोम 52.0.2743.82 पर परीक्षण)। – collapsar

26

यहाँ कुछ बहुत हैं उपयोगी जवाब:

How to prevent long words from breaking my div?

आप समय बचाने के लिए, इस सीएसएस के साथ हल किया जा सकता है:

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; 
+3

इसे +1 करें क्योंकि यह शब्द-ब्रेक का उल्लेख करता है: ब्रेक-सब; जो आईई 9 – NickBenedict

+2

'वर्ड-ब्रेक: ब्रेक-ऑल' में मेरे लिए काम करता था, केवल यही था जो मेरे लिए एंड्रॉइड वेबव्यू में काम करता था। – Stan

+3

यह केवल यही है जो क्रोम – human

1

सिर्फ width की स्थापना और float जोड़ने मेरे लिए काम किया :-)

width:100%; 
float:left; 
+0

में मेरे लिए काम करता है यह एक पूर्ण और आसान जवाब है, मुझे लगता है कि इस समस्या को पोस्ट करने वाले व्यक्ति को मूल रूप से चौड़ाई का उपयोग करना चाहिए: 100%; फ्लोट के साथ: बाएं; उस तत्व पर जिसमें स्ट्रिंग और उसकी समस्या हल हो जाएगी। तो यह उत्तर प्रासंगिक क्यों नहीं है? –

+0

क्योंकि वह व्यक्ति जिसने इस समस्या को पोस्ट किया है, ऐसा नहीं लगता कि आपका समाधान पांच साल पहले काम करता था। – Pierre

+2

हां, लेकिन यह मंच न केवल उस मंच के बारे में है बल्कि इस मंच के बारे में है और आज भी इसी तरह की समस्या का सामना करने वाले अन्य लोगों को इसका लाभ भी मिल सकता है। –

6

जाना सीएसएस के माध्यम से (जब वहाँ विशेष वर्ण सम्मिलित करने के लिए कोई उचित तरीका है) मेरी तरीका:

-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/ कुछ अतिरिक्त शोध के साथ वहां पाए गए।

-2

$ स्ट्रिंग = "ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA";

$ wrappedstring = html_entity_decode (wordwrap ($ string, 50, "<br>", सत्य)); यह सही कोड

2
<textarea style="width:100px; word-wrap:break-word;"> 
    place your text here 
</textarea> 
0

है एक मामले में जहां निश्चित आकार की मेज नहीं है, रेखा से नीचे मेरे लिए काम किया है:

style="width:110px; word-break: break-all;" 
0

उपयोग <wbr> टैग:

ACTGATCG<wbr>AGCTGAAG<wbr>CGCAGTGC<wbr>GATGCTTC<wbr>GATGATGC 

मैं इस बारे में सोच शून्य-चौड़ाई वाली जगह &#8203; का उपयोग करने से बेहतर है जो टेक्स्ट कॉपी करते समय समस्याएं पैदा कर सकता है।

संबंधित मुद्दे