संक्षिप्त जवाब
वर्तमान युक्ति के अनुसार, हाँ, styleतत्वों को हमेशा अंदर होना चाहिएhead । कोई अपवाद नहीं हैं (एक styleतत्व के अंदर एक templateतत्व को छोड़कर , यदि आप उस गणना करना चाहते हैं)।
यह हमेशा ऐतिहासिक रूप से मामला नहीं रहा है। यदि आप युक्ति और उसके इतिहास के विवरण की परवाह करते हैं, तो पढ़ते रहें।
कोई फर्क नहीं पड़ता कल्पना कहते हैं, का उपयोग कर styleमें तत्वों body करता है सभी प्रमुख ब्राउज़रों में और अधिक या कम काम करते हैं। हालांकि, यह एक बुरा अभ्यास माना जाता है क्योंकि यह कल्पना का उल्लंघन करता है और क्योंकि यह खराब प्रतिपादन प्रदर्शन या "अस्थिर सामग्री के फ्लैश" जैसे अवांछनीय परिणाम पैदा कर सकता है।
विशिष्ट इतिहास
styleHTML 2 में तत्व मौजूद नहीं थे । उन्हें HTML 3.0 में पेश किया गया था, जहां उन्हें उन तत्वों की सूची में शामिल किया गया था जिन्हें द हेड एलिमेंट में शामिल किया जा सकता था , लेकिन उन तत्वों की सूची में शामिल नहीं किया गया था जो द बॉडी एलिमेंट में मौजूद हो सकते हैं । इस प्रकार, जिस समय तत्व को पहली बार निर्दिष्ट किया गया था, उसे केवल इसमें शामिल किया जा सकता था head।
यह HTML 5 तक मामला (अलग-अलग शब्दों का उपयोग करके व्यक्त) बना रहा, जिसने तत्वों के scopedलिए (हटाए गए) विशेषता को पेश किया style। यह विशेषता, जब मौजूद थी, तो उस styleतत्व को शरीर में एक तत्व के भीतर रखने की अनुमति देने के लिए केवल उस तत्व के वंशज को स्टाइल करने की अनुमति थी । हालाँकि, उस विशेषता ने इसे कभी भी किसी वास्तविक ब्राउज़र में नहीं बनाया (कम से कम बिना डेवलपर फ्लैग के सक्षम होने की आवश्यकता नहीं थी) और इसे W3C और व्हाट्सऐप दोनों से हटा दिया गया था "कार्यान्वयनकर्ता की रुचि की कमी के कारण" । तत्पश्चात, styleतत्वों को केवल मेटाडेटा सामग्री की अनुमति देने वाले संदर्भों में अनुमति दी गई थी, जो केवल प्रमुख है। इस प्रकार हम HTML 5 के पहले के समान नियमों पर वापस आ गए थे।
हालांकि, दोनों कल्पना संगठनों द्वारा की गई एक त्रुटि के कारण, दोनों स्पेक्स में परिशिष्ट के रूप में शामिल तत्वों के एक गैर-मानक सूचकांक को हटाने के प्रतिबिंबित करने के लिए ठीक से अपडेट नहीं किया गया था scoped, जो इसे आदर्श कल्पना के साथ असंगत प्रदान करता है। मैंने इसे व्हाट्सएप और डब्लू 3 सी दोनों पर इंगित किया , और ऐसा अनजाने में गति की घटनाओं में सेट किया गया, जिससे दोनों चश्मा अलग हो गए।
मानक युक्ति और गैर-मानक सूचकांक के बीच असंगतता के लिए व्हाट्सएप का समाधान मेरे पैच को गैर-मानक सूचकांक को सही करने के लिए स्वीकार करना था ।
दूसरी ओर, डब्ल्यू 3 सी ने तत्वों के उपयोग की अनुमति देने के लिए मानक युक्ति को अपडेट करने के बजाय मेरे समकक्ष पैच को खारिज कर दिया , जबकि इस पर ध्यान दिया कि यह समस्या पैदा कर सकता है और इसे "देखभाल के साथ" किया जाना चाहिए। इस परिवर्तन के पीछे तर्क यह था कि वास्तविक जीवन ब्राउज़र व्यवहार के साथ कल्पना को संरेखित करें।stylebody
इस प्रकार, मार्च 2017 से, यह मामला था कि इस सवाल का आधिकारिक जवाब इस बात पर निर्भर करता था कि आपने किस मानक संगठन को सुनना चुना है। यदि आप (आमतौर पर अधिक सम्मानित) व्हाट्सएप कल्पना को सूचीबद्ध करते हैं, तो एक styleतत्व की अनुमति नहीं थी body। यदि आप डब्ल्यू 3 सी कल्पना में सूचीबद्ध हैं, तो इसे अनुमति दी गई थी, लेकिन अनुशंसित नहीं है।
इस मूर्खतापूर्ण स्थिति को समाप्त कर दिया गया (शायद कई अन्य ऐसी विसंगतियों की तरह) अप्रैल 2019 में W3C और WhatWG के बीच शांति संधि , जो इस बात पर सहमत थी कि व्हाट्सएप कल्पना एक सच्चा जीवित HTML मानक बन जाएगा, W3C के साथ केवल स्नैपशॉट को जारी करने से गिना जाता है। समानांतर में एक प्रतिस्पर्धा युक्ति विकसित करने के बजाय HTML विनिर्देशन। इस प्रकार, 2017 से डब्ल्यू 3 सी कांटा में परिवर्तन जो styleतत्वों को अनुमति देता है, bodyअब किसी भी मौजूदा युक्ति का हिस्सा नहीं है; यह इतिहास की एक जिज्ञासा मात्र है।
इसलिए, आज, हमें आधिकारिक तौर पर क्या अनुमति है यह निर्धारित करने के लिए केवल व्हाट्सएप कल्पना को देखने की जरूरत है । यह कहना है:
4.2.6। styleतत्त्व
मेटाडेटा सामग्री ।
जहां मेटाडेटा सामग्री अपेक्षित है।
एक <noscript>तत्व में जो एक तत्व का एक बच्चा है <head>।
एकल पृष्ठ युक्ति के माध्यम से CTRL- फ़िंग से पता चलता है कि एकमात्र तत्व जिसके सामग्री मॉडल में मेटाडेटा सामग्री शामिल है वह headतत्व है।
गैर मानक तत्वों का सूचकांक कि मैंने पहले भी पुष्टि फिक्सिंग है कि एक के लिए केवल तभी अनुमति माता-पिता का उल्लेख styleतत्व एक हैं headया noscriptतत्व।