2017-04-19 7 views
5

इन दोनों divs समान प्रस्तुत करते हैं। अग्रणी न्यूलाइन क्यों प्रदान की जाती है लेकिन पिछली नई लाइन (दूसरे div में) नहीं है? मैंने CSS3 spec में Line Breaking and Word Boundaries अनुभाग पढ़ा लेकिन यह इस व्यवहार की व्याख्या नहीं करता है।ब्राउजर एक "व्हाइट-स्पेस: प्री" तत्व के अंदर एक पिछला न्यूलाइन कैरेक्टर के कारण लाइन ब्रेक क्यों नहीं प्रस्तुत करता है?

.pre { 
 
    white-space: pre; 
 
    border: 1px solid red; 
 
    margin-bottom: 10px; 
 
}
<div class="pre"> 
 
hello 
 
world</div> 
 

 
<div class="pre"> 
 
hello 
 
world 
 
</div>

+0

ब्र की तरह, यदि यह आखिरी है, तो यह अतिरिक्त खाली रेखा नहीं बनाता है। यह केवल इसे तोड़ता है। यदि आप इसे दिखाना चाहते हैं, तो उसके पीछे सामग्री जोड़ें: '.pre: { सामग्री के बाद: ''; } ' –

+0

मुझे लगता है कि ये दोनों एक ही हैं। अंत/समापन टैग की स्थिति कोई फर्क नहीं पड़ता। –

+2

संभावित डुप्लिकेट [व्हाट्स स्पेस एचटीएमएल में कब मायने रखता है?] (Http://stackoverflow.com/questions/12863588/when-does-whitespace-matter-in-html) – CBroe

उत्तर

2

क्यों? खैर, स्पष्ट रूप से संगतता समस्याओं से बचने के लिए।

W3C का कहना है:

आदेश और वर्तमान कार्यान्वयन के बीच विसंगतियों SGML लाइन ब्रेक के नियमों के साथ समस्याओं से बचने के लिए, लेखकों उपयोगकर्ता एजेंट पर भरोसा नहीं करना चाहिए तुरंत एक स्टार्ट टैग के बाद या तुरंत एक से पहले सफेद स्थान रेंडर करने के लिए अंत टैग

and also:

ध्यान दें कि सफेद स्थान प्रोसेसिंग नियमों पहले से ही इन चेकों [white-space संपत्ति के मूल्य पर] से पहले खंड ब्रेक के बाद किसी भी टैब और रिक्त स्थान को हटा दिया है जगह ले लो।

अब यह बिल्कुल स्पष्ट नहीं है ब्राउज़रों अंत टैग से पहले खाली स्थान के रखने के लिए अनुमति दी गई है, तो जो विसंगतियों शुरू किया जाएगा, लेकिन वहाँ तुम्हारे पास है।

+0

ओप उदाहरण में, एक एकल सफेद-स्थान/ब्रेक होता है, जिसे प्रस्तुत नहीं किया जाएगा। यदि 2 लाइन ब्रेक हैं, तो एक को प्रस्तुत किया जाएगा और अभी भी हटा दिया जाएगा। डब्ल्यू 3 सी मुझे स्पष्ट लगता है :) –

+0

ओह लड़का। अब ऐसा लगता है कि वे वास्तव में _introducing_ असंगतताएं हैं! निश्चित नहीं है कि अब मेरा जवाब कैसे संपादित करें। –

+0

मुझे नहीं लगता कि आपको अपना जवाब संपादित करना है :) –

0

क्योंकि पिछले \n काम नहीं करेगा। और संपत्ति white-space: pre काम करता है जैसा कि इसे कहा जाता है। यह केवल एक शब्द से पहले नई लाइन जोड़ता है। अंतिम \n एक शब्द के रूप में पहचाना नहीं गया है।

+0

?? क्या तुम समझा सकते हो? मुझे सफेद-स्थान के साथ कनेक्शन नहीं दिख रहा है: पूर्व; –

+0

@GCyrillus मेरा मतलब है 'व्हाइट-स्पेस: प्री' फ़ंक्शंस जिसे इसे कहा जाता है। यह केवल उन शब्दों से पहले काम करता है जिन्हें आप '

'में शामिल करते हैं और अंतिम' \ n' शब्द के रूप में पहचाना नहीं जाता है। – Muran

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