मुद्दे का संक्षिप्त विवरण:फ़ॉन्ट आकार सीएसएस-मूल्यों छाया डोम जड़ के आधार पर
मैं फ़ॉन्ट आकार के आधार मूल्यों एक में (एक उन्हें-मूल्य के लिए कुछ संपत्ति निर्धारित करने के समान) स्थापित करने के लिए एक तरह से देख रहा हूँ छाया होस्ट में मूल तत्व के फ़ॉन्ट आकार के बावजूद छाया मेजबान के सापेक्ष एक छाया डोम के अंदर तत्व। रिम-वैल्यू कैसे काम करते हैं, लेकिन एचटीएमएल रूट की बजाय छाया के रूप में छाया के समान कुछ।
इसका कारण एक स्थान पर विजेट (जो छाया डोम के साथ डाला गया है) जैसी सामग्री को स्केल करने में सक्षम होना है। यदि फ़ॉन्ट आकार पर आधारित गुणों को इस तरह से स्केल किया जा सकता है, तो प्रत्येक संदर्भ में एक संपूर्ण विजेट को प्रत्येक स्थान पर फिट करने के लिए बहुत सारे सीएसएस मान सेट किए बिना स्केल किया जा सकता है।
मुद्दे का विस्तृत वर्णन:
मैं आकार पाठ (font-size) डोम में एक दिया तत्व के आधार पर करने के लिए एक तरह से देख रहा हूँ, कि तत्व के अंदर सामग्री के विभिन्न भागों पैमाने पर करने में सक्षम होने की इस रैपिंग तत्व (विगेट्स और इस तरह के लिए अच्छा) के आधार पर। यह केवल वास्तविक पाठ के लिए नहीं है, फ़ॉन्ट आकार पर बहुत सारे सीएसएस मूल्यों को आधार देने के लिए अक्सर अच्छा होता है, इसलिए तत्व टेक्स्ट के आकार (जैसे पैडिंग, सीमा-त्रिज्या और छाया) के साथ दृश्य लेआउट स्केल करते हैं। अगर सब कुछ एम-वैल्यू पर आधारित है, तो यह थोड़ा गन्दा हो सकता है। यदि तत्व के अंदर फ़ॉन्ट-आकार के उत्तराधिकारी के कई स्तर हैं, और मैं दूसरे स्तर को बदलने के बिना पहले स्तर को बड़ा करना चाहता हूं, तो मुझे किसी भी दूसरे स्तर के तत्व को कम करने के दौरान, डोम में पहले स्तर के एम को बड़ा करने की आवश्यकता होगी (जिसे उस प्रथम स्तर के आधार पर गणना की जाती है) उपखंडों का पाठ एक ही आकार के बने रहने के लिए। यह कई मामलों में इष्टतम से कम है।
एक अच्छा समाधान रूट ईएम (रीम) पर सामान आधारित है, इसलिए डोम का एक स्तर बदलना उप-तत्वों को प्रभावित नहीं करता है। हालांकि, अगर मैं एक ही पृष्ठ पर अन्य तत्वों को प्रभावित किए बिना इस रैपिंग तत्वों (एक स्थान पर) के अंदर सभी पाठों के आकार को बड़ा/छोटा करना चाहता हूं, तो मुझे सभी फ़ॉन्ट-आकारों के रिम-वैल्यू को बढ़ाने/कम करने की आवश्यकता होगी उस रैपिंग तत्व के अंदर तत्व।
मैंने हाल ही में छाया डोम और टेम्पलेट्स के साथ वेब घटक देखना शुरू कर दिया। टेम्पलेट-टैग में, सीएसएस encapsulated है जो महान है क्योंकि उस बॉक्स/विजेट/घटक का डिज़ाइन शेष डिजाइन, अवांछित विरासत मूल्यों और इस तरह के बारे में सोचने के बिना अपने आप पर स्टाइल किया जा सकता है। आखिरकार एक वेबपृष्ठ बनाने के लिए स्वतंत्र घटकों को बनाने का एक अच्छा तरीका। लेकिन अगर मैं टेम्पलेट के लिए एक प्रकार का टेम्पलेट रूट फ़ॉन्ट आकार सेट कर सकता तो बहुत अच्छा होगा। इसलिए यदि मैं टेम्पलेट के अंदर कुछ तत्व फ़ॉन्ट-आकार 2rem (या किसी अन्य समान इकाई) के रूप में सेट करता हूं, तो मेजबान में फ़ॉन्ट आकार के बावजूद, उस तत्व का फ़ॉन्ट-आकार टेम्पलेट का रूट फ़ॉन्ट आकार 2x होगा तत्व जहां उस टेम्पलेट का उपयोग किया जाता है, और पृष्ठ की रूट (HTML तत्व) के फ़ॉन्ट आकार के बावजूद।
जब मैंने टेम्पलेट के अंदर रिम-वैल्यू के साथ परीक्षण किया, तो यह अभी भी पेज रूट (एचटीएमएल टैग) फ़ॉन्ट-साइज पर आधारित था। मैंने vw-values का भी परीक्षण किया है लेकिन यह पूरे व्यूपोर्ट पर भी आधारित है, न केवल encapsulated क्षेत्र (छाया रूट)।
मैंने छाया डोम के बारे में बहुत सारे लेख देखे हैं, लेकिन मुझे इस मुद्दे पर कोई समाधान नहीं मिला है। कोई सुझाव?
क्या होता है (सरलीकृत उदाहरण):
<html style="font-size: 16px">
<body style="font-size: 12px">
I am 12px large
<!-- em, based on the body in this case -->
<div style="font-size: 1.5em">
I am 18px large
<div style="font-size: 1.5em">
I am 27px large
</div>
</div>
<!-- rem, based on the styles of the html element -->
<div style="font-size: 1.5rem">
I am 24px large
<div style="font-size: 1.5rem">
I am 24px large
</div>
</div>
</body>
</html>
मुझे क्या करना चाहते हैं: (: जड़ ऊपर के उदाहरण का हिस्सा) सभी रिश्तेदार font- नियंत्रित करने के लिए
<html style="font-size: 16px">
<body style="font-size: 12px">
I am 12px large
<div style="font-size: 1.5em">
I am 18px large
</div>
<div style="font-size: 1.5rem">
I am 24px large
</div>
<template> <!-- Simulates that it is inserted into the DOM by using shadow elements -->
<style>
:root{ /* Or something like that */
font-size: 20px; /* This is the simulated "template root fontsize" */
}
</style>
<div style="font-size: 1.5trem"> <!-- Based on the template root fontsize -->
I am 30px large
<div style="font-size: 2trem">
I am 40px large
</div>
</div>
</template>
</body>
</html>
यह एक ही स्थान पर देना होगा उस घटक के अंदर आकार, और फिर इसे गैर-रिश्तेदार फ़ॉन्ट-आकार जैसे पीएक्स या अन्य सामान्य सीएसएस मानों के साथ जोड़ा जा सकता है।
इससे समस्या हल नहीं होती है। मैं माता-पिता की परवाह किए बिना, छाया रूट के आधार पर फ़ॉन्ट आकार आधारित मान सेट करना चाहता हूं। फिर मैं सभी उप तत्वों पर मीडिया प्रश्नों के बजाय मीडिया क्वेरी के साथ टेम्पलेट रूट को नियंत्रित कर सकता हूं। एम-वैल्यू एचटीएमएल रूट पर पैरेंट, रीम-वैल्यू पर आधारित होते हैं। मेरे उदाहरण में, एचटीएमएल फ़ॉन्ट आकार 16 है, और टेम्पलेट रूट 20 है। मैं एक तत्व को 1.5x टेम्पलेट रूट फ़ॉन्ट आकार में सेट करने में सक्षम होना चाहता हूं (जैसे कि "मैं अपने उदाहरण में 30px बड़ा हूं) और एक उप माता-पिता की परवाह किए बिना 2x टेम्पलेट रूट (40 पीएक्स) होने के लिए - (30 पीएक्स है)। – henit
@henit मुझे विश्वास नहीं है कि केवल सीएसएस के साथ संभव है, लेकिन यह जावास्क्रिप्ट के साथ किया जा सकता है। मैंने एक स्क्रिप्ट के साथ उत्तर और [plunker] (http://plnkr.co/edit/P1KOZ4NGmpycGgCgRpSq?p=preview) अपडेट किया है जो रेम फ़ॉन्ट आकार को छाया रूट के सापेक्ष बदलता है। प्लंबर को पॉप आउट करें और मीडिया क्वेरी में बदलाव देखने के लिए विंडो का आकार बदलें। – quantumwannabe