क्या <body> में <style> होना गलत होगा?


12

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

क्या ऐसा कोई परिदृश्य है जहां यह उल्टा है क्योंकि मैं इसे सिर के खंड में नहीं डाल रहा हूं?

<!-- myPartial.html starts here --> 
<!-- Like to keep styles unique to this html right here in this file --> 
<div>
  <style>
    body { background-color: red; }
    #myText { color: white; }
  </style>

  <span id='myText'>Hello</span>
</div>
<!-- myPartial.html ends here --> 

जवाबों:


18

styleतत्व के अंदर एक तत्व bodyHTML सिंटैक्स नियमों का उल्लंघन करता है। (इसके अलावा एचटीएमएल 5 ड्राफ्ट के अनुसार, यह कुछ स्थितियों में अनुमत है, यदि scopedविशेषताएँ मौजूद हैं; यह विशेषता कुछ ब्राउज़रों द्वारा समर्थित है।) दूसरी ओर, ब्राउज़र परवाह नहीं करते हैं। में headऔर bodyतत्वों का विभाजन सैद्धांतिक है।

फिर भी, आप अमान्य सिंटैक्स का उपयोग करके कुछ भी हासिल नहीं करते हैं, जैसा कि styleअंदर रखने के विपरीत है head। केवल बहाना तकनीकी सीमाओं में होगा, कुछ संलेखन वातावरणों में, जो आपको कुछ भी headहिस्सा लगाने से रोक सकता है ।

एक styleतत्व बनाम बाहरी स्टाइलशीट के माध्यम से उपयोग करने का मुद्दा linkइस प्रश्न के लिए पूरी तरह से रूढ़िवादी है।


1
आपके उत्तर का पहला भाग आवश्यक रूप से सत्य नहीं है
patricksweeney

1
@patricksweeney, मुझे लगता है कि यह इस संदर्भ में कुछ सैद्धांतिक है, लेकिन एक सही अवलोकन है; उत्तर अपडेट किया गया।
जुक्का के। कोर्पेला

मैं अपने दृष्टिकोण के लिए एक सकारात्मक के रूप में "ब्राउज़रों की परवाह नहीं करता" लेता हूं। जैसा कि मेरे पृष्ठ आंशिक हैं (एकल-पृष्ठ-अनुप्रयोग), मेरे पास <head> अनुभाग नहीं हो सकता है, यही कारण है कि मैं <body> या शरीर के अंदर के तत्वों को डालने का प्रयास कर रहा हूं।
सारण १

2
@ आकाशगंगा, मैं नहीं देखता कि एकल-पृष्ठ अनुप्रयोग में एक headतत्व की कमी क्यों होगी । एक HTML पेज हमेशा एक होता है।
जुका के। कोरपेला

@ JukkaK.Korpela, मैंने आपके प्रश्न का उत्तर देने के लिए मेरे प्रश्न में कोड भाग अपडेट किया।
सारण

6

(चूंकि हम यहां एसईएक्स पर हैं, अधिक रणनीतिक दृष्टिकोण सामान्य तकनीकी विचारों के लिए एक मूल्यवान वृद्धि हो सकती है।)

[प्रस्तावना] एचटीएमएल ५ कल्पना एक निरंतर चलने वाला लक्ष्य है, और इनकी स्थापित सामान्य व्यवहार पर अनुवर्ती नीति है। उन्होंने अतीत में सुविधाओं का पालन और पुनरुत्थान किया, दूसरों के अर्थ बदले, पद्धतिगत अनुशंसाओं पर ध्यान केंद्रित किया आदि। यह मानव जाति के सभी ज्ञान के साथ अनंत काल के लिए नहीं लिखा है। कल्पना सच्चाई का पवित्र स्रोत नहीं है। यह केवल स्वाभाविक है कि कभी-कभी ब्राउज़र सही होते हैं। [/ प्रस्तावना]

ओपी की स्थिति अत्यधिक सामान्य और वैध है।

आपके पास एक सीएमएस है, जिसकी थीम डिज़ाइन और इंस्टॉल की गई है, सभी सीएसएस HEAD से ठीक से लोड किए गए हैं, फिर आप वहां हैं, पृष्ठ संपादक, एक फैशनेबल WYSIWYG बॉक्स के साथ छोड़ दिया गया है जिसे आप (भगवान का शुक्रिया!) "स्रोत मोड" पर स्विच कर सकते हैं। HTML मार्कअप में टाइप (पेस्ट) (पहले उपयुक्त अन्य उपकरण, अधिक उपयुक्त टूल के साथ)। सौभाग्य से आप STYLEटैग भी शामिल कर सकते हैं (शायद एक टैग फिल्टर में एक गंभीर चूक के कारण) ... दिन को बचाया जाता है, बहुत से दोहराए जाने वाले आत्मा-विनाश ग्रंट कार्य से। लेकिन आपके पास अभी भी कोई साधन नहीं है, जो कि पेज एडिट परिदृश्य से सिस्टम के प्रमुख तत्व के साथ हस्तक्षेप करने के लिए है।

क्या आपको अपने HTML टुकड़ों के साथ अपने सीएसएस का सीधा उपयोग करने से रोकना चाहिए, सिर्फ इसलिए कि कल्पना ऐसा कहती है?

या, आपके पास एकल-पृष्ठ AJAX अनुप्रयोग है।

यह एक लंबे सत्र के लिए फिर से लोड किए बिना चल रहा है, और विभिन्न यादृच्छिक स्रोतों से आने वाली सिंडिकेटेड सामग्री हैं, सभी मनमाने ढंग से और स्वतंत्र रूप से स्टाइल किए गए हैं। उन्हें केवल STYLEएक एम्बेडेड STYLEतत्व के साथ आने के बजाय केवल इनलाइन विशेषताओं का उपयोग करने के लिए परिवर्तित किया जाना आवश्यक होगा।

इसके अलावा: आप ए) पहले से ही किसी भी सीएसएस BODYको STYLEविशेषताओं के माध्यम से कहीं भी एम्बेड कर सकते हैं , इसलिए सीएसएस वैसे भी "सैद्धांतिक रूप से" कानूनी है; और बी) आप पहले से ही किसी भी शैली के बारे में जो कुछ भी चाहते हैं, आप कर सकते हैं, जब भी आप चाहते हैं (और अधिक) जावास्क्रिप्ट से, तो सीएसएस भी पहले से ही संभवतः गैर-निष्पादित तरीकों से दुरुपयोग करना संभव है। और हम में से कोई भी कभी भी उन सुविधाओं पर आपत्ति नहीं करेगा। और न ही W3C।

तो, क्या वास्तव में STYLEतत्वों के बारे में इतना बुरा है BODY? उन अतिरिक्त प्रतिकूल प्रभावों के बारे में क्या है जो इसे HTML निर्माण में दुरुपयोग के हमारे व्यापक शस्त्रागार में जोड़ देगा? अधिक खराब प्रदर्शन? शायद। कभी कभी।

क्या यह एक अविश्वसनीय रूप से उपयोगी अभ्यास को खत्म करने का एक वैध कारण है, जो एक कारण से हर ब्राउज़र द्वारा समर्थित है? एक लाख मील में नहीं!

हम बेवकूफ नहीं हैं। ठीक है, हमेशा नहीं, या हमेशा नहीं ...;) खराब प्रदर्शन के जोखिम के साथ तकनीकों को केवल निषिद्ध के बजाय प्रलेखित किया जा सकता है । हमारे पास वेब के शुरुआती दिनों में जावा एप्लेट्स थे, और बच गए। कारों का दुरुपयोग किया जा सकता है, जिससे दुख हो सकता है, यहां तक ​​कि भोजन को परेशान करने, अकुशल तरीकों से इस्तेमाल किया जा सकता है, और जो ड्राइवर खा सकते हैं, वे औसत वेब डिजाइनर की तुलना में अधिक बेवकूफ भी हो सकते हैं। इसके अलावा, डियर डब्ल्यू 3 सी, चिंता करने की कोई जरूरत नहीं: एचटीएमएल टिंकर के नाराज झुंड अपने पैरों को STYLEतत्वों के साथ बंद BODYकर देते हैं फिर भी डब्ल्यू 3 सी के बाद नहीं जा सकते हैं और बदला ले सकते हैं। उन्हें पता नहीं है। और उनके कोई पैर नहीं हैं।

तो, कृपया: अपनी आवाज को STYLEकानूनी बनने के लिए सुने BODY! पाठ का हवाला देते हुए, लेकिन एक व्यवहार्य विकल्प प्रदान करने में विफल रहने से जो मौजूदा स्थिति से बेहतर है, कोई मदद नहीं करता है। यह वास्तव में इस अंतिम उपाय समाधान तकनीक के लिए खतरा है।

याद रखें: HTML5 कल्पना को एक सिफारिश कहा जाता है ।


अपडेट: चश्मा अंत में पकड़ा: STYLEहै अब वैध में BODY! ;)
लुनाकिड

1
अद्यतन 2: चश्मा बिना पकड़े-पकड़े क्योंकि उन्होंने अपना दिमाग बदल दिया (lunakid के लिंक पर क्लिक करें, यह अद्यतन किया गया था)।
मैक्सिमिलियन ल्यूमिस्टर

2

HTML विनिर्देश कहा गया है कि

एक स्कॉप्ड विशेषता के बिना एक शैली तत्व दस्तावेज़ के प्रमुख में प्रदर्शित होने के लिए प्रतिबंधित है।

स्कोप्ड विशेषता एक बूलियन मूल्य है जो यह दर्शाता है कि इसे शैली तत्व के मूल तत्व में निहित उप पेड़ पर लागू किया जाना चाहिए।

इस समय केवल फ़ायरफ़ॉक्स स्कॉप्ड विशेषता का समर्थन करता है। http://www.w3schools.com/tags/att_style_scoped.asp


5
W3schools साइट को संदर्भ के रूप में या बिल्कुल भी उद्धृत नहीं किया जाना चाहिए; देखें w3fools.com
। कोर्पेला

2
और यह सवाल का जवाब नहीं देता है।
जुक्का के। कोर्पेला

1
धन्यवाद @ JukkaK.Korpela यह पहला लिंक था जिसे मैंने स्कॉप्ड विशेषता ब्राउज़र समर्थन का उल्लेख करते हुए पाया। अन्य टिप्पणी बहुत बेहतर उद्धरण प्रदान करती है। +1 आपका उत्तर -1 रचनात्मक टिप्पणियों से कम है।
crad

+1 को युक्ति की ओर इशारा करने के साथ-साथ स्कूपिंग के लिए समर्थन की कमी (जो कल्पना का पालन करना आवश्यक है) के लिए। मुझे लगता है कि आपको बंदूक कूदने से पहले जवाब पढ़ना चाहिए था @ JukkaK.Korpela, बहुत गरीब। आप वास्तव में कल्पना से अधिक भरोसेमंद नहीं हो सकते, और यह पूरी तरह से सवाल का जवाब देता है। " क्या शरीर में स्टाइल होना गलत होगा " - कल्पना के अनुसार " हाँ यह होगा "।
फर्ग्यूस इन लंदन

1

किसी फ़ाइल बनाम शैली टैग में आपका सीएसएस होने के कुछ तकनीकी कारण हैं:

  • सीएसएस मिनिफायर का उपयोग करने की क्षमता (मेरा मानना ​​है कि मिनिफ़ायर स्टाइल टैग पर काम नहीं करते हैं)
  • सीएसएस फ़ाइल को ब्राउज़र द्वारा कैश किया जा सकता है।

फ़ाइल का उपयोग करने के लिए कुछ राय आधारित कारण:

  • आप एक अद्भुत सीएसएस प्रीप्रोसेसर जैसे सैस (कम्पास) या कम का उपयोग कर सकते हैं।
  • आप अपने आवेदन में css जोड़ने के दो तरीके अपना रहे हैं।

मेरी व्यक्तिगत प्राथमिकता प्रत्येक पृष्ठ के लिए अलग-अलग फाइल रखने के लिए कम्पास का उपयोग करना है और फिर उन सभी को एक फाइल में संकलित करना है। उस सिंगल फाइल को हर पेज द्वारा शामिल किया जाएगा। यदि सड़क के नीचे फाइलों को अलग करने की आवश्यकता है, तो जो भी कारण हो, वे हमेशा हो सकते हैं, लेकिन यह इस बीच परेशानी के लायक नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.