2013-01-02 26 views
12

मैं एक तरह से निर्दिष्ट करने के लिए जहां एक लाइन तोड़ने अगर यह एक तरह से ­ (नरम/विवेकाधीन हाइफन) के लिए इसी तरह अपने लाइन पर फिट नहीं कर सकते चाहिए की तलाश में हूँ, लेकिन एक जगह के साथ। मैंने इसे गुगल करने की कोशिश की लेकिन मुझे कई प्रासंगिक हिट नहीं मिलीं (ज्यादातर "एचटीएमएल" निर्दिष्ट करने के बावजूद इनडिज़ीन के लिए), और जो कुछ मैंने पाया वह कुछ लोगों ने कहा कि उन्हें किसी तरह से पता नहीं था।एचटीएमएल में विवेकाधीन लाइन ब्रेक?

पूर्व।

हैलो, मेरा नाम
foo है।
बनाम
हैलो,
मेरा नाम foo है।
लेकिन यदि स्थान उपलब्ध है:
हैलो, मेरा नाम foo है।

विशिष्टता के लिए, मैं white-space: normal/nowrap/pre/… मतलब यह नहीं है और मैं <br /> साथ की तरह एक को तोड़ने के लिए मजबूर नहीं करना चाहती।

मैं एंगुलरजेएस का उपयोग कर रहा हूं, इसलिए अधिकांश चीजें जावास्क्रिप्ट के माध्यम से संसाधित की जाती हैं, इसलिए यदि इसके साथ ऐसा करने के लिए एक आसान/कुशल/चालाक तरीका है, तो मैं इसके लिए खुलेगा।

+1

संभावित सहायता: http://stackoverflow.com/questions/226464/soft-hyphen-in-html-wbr-vs-shy – sgeddes

+0

मुझे यह करने के लिए एक सौहार्दपूर्ण तरीका नहीं पता है। प्रत्येक स्थान के लिए ' ' का उपयोग करने के लिए एक पागल तरीका * को छोड़कर * जिसे आप तोड़ना चाहते हैं, लेकिन वह पूरे पाठ को गड़बड़ कर देगा। अगर यह सिर्फ * हैलो * भाग है, हालांकि, यह सिर्फ काम कर सकता है। – toniedzwiedz

+2

अदृश्य '­' के बारे में क्या? – SLaks

उत्तर

2

मैं वहाँ ऐसा करने के लिए किसी भी देशी तरीका है, लेकिन यहाँ एक हैक मैं उपयोग करते आ रहे जब भी मैं वास्तव में बात यह है कि इस तरह की जरूरत नहीं लगता है:, मूल रूप से

var str = "Hello,<br>My name is foo."; 

str = str.replace(/ /g, '&nbsp;').replace(/<br>/g, ' '); 

एक नॉन-ब्रेकिंग स्पेस का उपयोग उन शब्दों को अलग करने के लिए जिन्हें आप तोड़ना नहीं चाहते हैं।

इसे यहां क्रिया में देखें: http://jsfiddle.net/5xmt6/ (यह देखने के लिए विंडो का आकार बदलें कि यह कैसा प्रतिक्रिया करता है)।


नोट: इस बहुत hacky है, और समस्याओं के अपने स्वयं के सेट से परिचित करवाता है अर्थात्: यदि व्यूपोर्ट बेहद संकीर्ण हो जाता है, तो शेष पाठ लपेट नहीं जाएगा।

+1

यह चालाक है, हालांकि यह बहुत गड़बड़ है, यह हाहा करेगा। विचार के लिए धन्यवाद! – jacob

6

आप <wbr> टैग का उपयोग कर सकते हैं।

संपादित करें: के रूप में टिप्पणी में उल्लेख किया है, आप का उपयोग एक zero-width space सकता है: &#8203; (यह भी देखें: What's the opposite of a nbsp?)

+5

केवल HTML5 के लिए। इसके अलावा, * w3schools के अलावा संसाधनों को खोजने का प्रयास करें: डी –

+6

['Wbr'] (https://developer.mozilla.org/en-US/docs/HTML/Element/wbr) * एक शब्द के भीतर * तोड़ने के लिए है। ओपी ब्राउज़र के शब्दों को तोड़ने के लिए मार्गदर्शन करना चाहता है सेट करें। –

+1

@pst - IE संस्करण 5.5 –

10

इंगित करने के लिए जहां लाइन ब्रेक शब्दों के बीच दिखाई नहीं चाहिए, एक-ब्रेक स्पेस का उपयोग करें, या शब्दों के बीच ' '। कोई सामान्य स्थान ब्रेक करने योग्य है। तो आप लिख सकते हैं उदा।

Hello,&nbsp;my&nbsp;name is&nbsp;foo. 

आप बल्कि अनुमति टूट जाता है तो यह बताएं कि होगा (नीचे अपनी टिप्पणी के अनुसार), आप एक nobr तत्व के अंदर पाठ लपेट कर सकते हैं (गैरमानक, लेकिन एक आकर्षण की तरह काम करता है) या किसी भी तत्व है जिसके लिए आप white-space: nowrap सेट के अंदर , इस प्रकार स्पष्ट रूप से मजबूर या अनुमति देने के अलावा लाइन ब्रेक को अस्वीकार कर दिया जाता है। फिर आप <wbr> टैग का उपयोग करेंगे (गैर मानक, लेकिन ...) या चरित्र संदर्भ &#8203; या &#x200b; (बर्फ शून्य शून्य स्पेस के लिए) के बाद एक लाइन ब्रेक की अनुमति देने के लिए एक स्थान, उदा।

<nobr>Hello, <wbr>my name <wbr>is foo.</nobr> 

<wbr> और शून्य चौड़ाई स्पेस के बीच विकल्प मुख्य रूप से आईई विषमताएं की वजह से एक tricky issue है।

+1

उदाहरण के लिए, मैं कुछ ऐसा करूंगा: 'हैलो, &dbr; मेरा नाम foo.' है (जहां '&dbr;' एक विवेकाधीन लाइन ब्रेक है, लेकिन जहां तक ​​मुझे पता है, '&dbr;' वास्तविक नहीं है)। – jacob

+0

@jacob, बस बनाई गई इकाइयों का उपयोग न करें। समस्या क्या है? –

+1

मैं यह निर्दिष्ट करना चाहता हूं कि लाइन ब्रेक कब होना चाहिए यदि लाइन ब्रेक की आवश्यकता है। मैं वास्तव में यह निर्दिष्ट करने के लिए एक वर्ण का उपयोग करना पसंद करूंगा कि इसे कहीं भी निर्दिष्ट करने के लिए अक्षरों के समूह का उपयोग करने के बजाय यह कहां होना चाहिए। – jacob