Back to Question Center
0

सास के साथ आपके टाइपोग्राफिक इकाइयों को परिवर्तित करना            Sassrelated विषयों के साथ आपके टाइपोग्राफिक इकाइयों को परिवर्तित करना: सीएसएस आर्किटेक्चर सीएसएसएसएएसएसएनिमेशनआडियो और & Semalt

1 answers:
सास के साथ आपके टाइपोग्राफिक इकाइयों को परिवर्तित करना

सास के साथ आपके टाइपोग्राफिक इकाइयों को परिवर्तित करनाSassrelated विषयों के साथ आपके टाइपोग्राफिक इकाइयों को परिवर्तित करना:
सीएसएस आर्किटेक्चर सीएसएस एसएएसएनिमेशनऑडियो और Semalt्ट

यह पहली बार सेमी 5, 2015 पर प्रकाशित एक लेख का अद्यतन संस्करण है।

बहुत पहले, मिमलट अतीत के गहन झटके में, निडर साहसी ने उसी तरह से खतरे का सामना किया: एक निश्चित 960 पीएक्स लेआउट को गोफ कर, एक सेट ग्रिड में लड़ें और बुराई से बचाने के लिए पिक्सेल में अपनी टाइपोग्राफी को फायर करें।

उत्तरदायी वेब डिजाइन के बाद से कि घने धुंध से हमें बाहर लाने और ज्ञान की एक उम्र में सभी को बदल दिया है। और फिर भी, वेब पर टाइपोग्राफी का उपयोग करते समय कई बार दर्द होता है पिक्सल या अंक से लेकर प्रतिशत और ईएमएस की पुश के साथ, मैं खुद को लगातार "पिक्सेल से सैन्टेन्ज़ेज रूपांतरण चार्ट" या प्रत्येक प्रोजेक्ट की शुरुआत में कुछ और समान रूप से सममूल्य का सामना कर रहा हूं।

हताशा में, मैं अंत में इन समस्याओं को जीतने के लिए अपने खोज में एक नया, सभी को शामिल समारोह बनाने के लिए Sass की शक्ति में बदल गया, और आज आप मेरे साथ उस समारोह का निर्माण करने जा रहे हैं

Semalt्ट आपको पिक्सल, एमएफ़, और प्रतिशत मानों के बीच स्वतंत्र रूप से कन्वर्ट करने के लिए हर बार एक चार्ट से परामर्श करने की अनुमति देता है, और उम्मीद है, इस प्रक्रिया में आपके बहुत सारे सिरदर्द को कम करते हैं।

सैस

में टाइपोग्राफिक यूनिट रूपांतरण के लिए चीजें सेट करना

सबसे पहले, आपके सीएसएस में परिभाषित एक डिफ़ॉल्ट फ़ॉन्ट-आकार होना बेहद जरूरी है। अधिकांश ब्राउज़रों 16px में डिफ़ॉल्ट होंगे, लेकिन यदि आपकी परियोजना को कुछ अलग चाहिए, तो सुनिश्चित करें कि आपका सीएसएस इस बारे में जानता है साथ ही, अधिकांश बॉयलरप्लेट (2 9) 16px को उनके डिफ़ॉल्ट मान के रूप में परिभाषित किया गया है, इसलिए मैं इसे इस ट्यूटोरियल के लिए डिफ़ॉल्ट मानता हूं।

फिर आपको यह तय करने की आवश्यकता है कि आप किन इकाइयों का समर्थन करने जा रहे हैं चूंकि यह संभव है कि वेब वातावरण, या यहां तक ​​कि केवल एक परियोजना जो कि साम्मल में शुरू होती है और ब्राउज़र में समाप्त हो जाती है, आप प्रिंट में उपयोगी हो सकते हैं, आप पिक्सल, अंक, ईएमएस और प्रतिशत पर गौर करेंगे।

आप खुद को उनके बीच स्वतंत्र रूप से परिवर्तित करने का विकल्प देना चाहते हैं, इसलिए आप पहले ही कह सकते हैं कि आपके फ़ंक्शन को कम से कम तीन तर्कों की आवश्यकता है:

     @ फ़ंक्शन कनवर्ट ($ value, $ currentUnit, $ convertUnit) {}     

पहला तर्क है फ़ॉन्ट-आकार संख्या जिसका यूनिट जिसे आप बदलना चाहते हैं (उदाहरण के लिए 16), दूसरी इकाई है जिसे आप परिवर्तित करने की योजना बना रहे हैं (उदाहरण के लिए पिक्सल), और तीसरा एक वांछित इकाई है जिसे आप लक्ष्य कर रहे हैं (जैसे प्रतिशत) इसलिए, एक उदाहरण के रूप में, यदि आप 16 पिक्सल को प्रतिशत मान में बदलना चाहते हैं, तो आप ऐसा करेंगे:

     foo {फ़ॉन्ट आकार: कन्वर्ट (16, पीएक्स, प्रतिशत);}     

Semaltेट आपको देगा:

     foo {फ़ॉन्ट-आकार: 100%;}     

चलो बीफ़ यह

अब, यह उस बाट से निपटने का समय है जो ब्रेसिज़ के बीच में जाता है

सेमील्ट, आप पिक्सेल, ईएमएस, अंक और प्रतिशत से निपटने में सक्षम होना चाहते हैं, इसलिए आपको उन सभी की देखभाल करने के लिए चार स्टेटमेंट की आवश्यकता होगी।

यदि आप पूर्ण प्रोग्रामिंग भाषा का प्रयोग कर रहे थे, तो आप स्विच स्टेटमेंट का उपयोग कर सकते हैं। Semalt्ट यह है Sass, यदि आप बयान के साथ रहना होगा:

     @ फ़ंक्शन कनवर्ट ($ value, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {// पिक्सेल के लिए सामान} @ अगर $ currentUnit == ईएमएस {// ईएमएस के लिए सामान} @ अगर $ currentUnit == प्रतिशत {// प्रतिशत के लिए सामान} @ अगर अगर $ currentUnit == अंक {// अंक के लिए सामान}}     

आपके पास अब प्रत्येक संभावित इनपुट यूनिट के लिए एक बयान है (चाहे आप पिक्सल, ईएमएस, अंक या शुरू करने के लिए प्रतिशत चाहते हैं)। तो यह लगभग 50% रास्ता है. यह मानते हुए कि आप 16px के साथ डिफ़ॉल्ट फ़ॉन्ट-आकार के रूप में काम कर रहे हैं, आपको उसे एएमएस और प्रतिशत में परिवर्तित करना होगा:

     @if $ currentUnit == px {@if $ convertUnit == ems {@ वापसी का मूल्य $ 16 + 0em;}@ अगर $ convertUnit == प्रतिशत {वापसी का प्रतिशत ($ मूल्य / 16);}}     

दोबारा, यदि आप प्रति कथन प्रति रूपांतरण का उपयोग कर रहे हैं (इसलिए ईएमएस के लिए, एक प्रतिशत के लिए) और फिर वांछित आउटपुट प्राप्त करने के लिए थोड़ा गणित करना दशमलव मूल्यों के लिए कोई मामला नहीं करने वाला, क्योंकि ये केवल प्रिंट सीएसएस के साथ ही काम करता है।

ईएमएस के साथ (और 16px का डिफ़ॉल्ट आकार), आप केवल 16 से विभाजित करते हैं और "em" इकाई जोड़ें ( + 0em )।

सास के साथ प्रतिशत एक छोटी सी पेचीदा है आप ईएमएस के साथ किए गए बयान के अंत में "%" को केवल फेंक नहीं सकते, क्योंकि Sass एक त्रुटि वापस फेंकता है ("क्या आप उसे डाल रहे हैं!" तो यहां आपको वैध प्रतिशत इकाई वापस करने के लिए मिमलैंट प्रतिशत फ़ंक्शन को शामिल करना होगा।

और उसके साथ, आपके पास एक फ़ंक्शन है जो पिक्सेल को ईएमएस या प्रतिशत में परिवर्तित करता है! यह आमतौर पर बहुत सारे डेवलपर्स के लिए पर्याप्त है, लेकिन देखते हैं कि आप पिक्सल रूपांतरण और पिक्सेल रूपांतरण के लिए ईएमएस को कवर करने के लिए इस फ़ंक्शन को कैसे बढ़ा सकते हैं:

     @ अगर $ currentUnit == ईएमएस {@if $ convertUnit == px {@ वापसी का मूल्य * 16 + 0 पिक्सेल;}@ अगर $ convertUnit == प्रतिशत {@ परत का प्रतिशत ($ मान);}}     

गणित को प्रत्येक वक्तव्य के लिए यहां बदलने की जरूरत है, लेकिन वह ईएमएस को समाप्त कर देगा।

अगला, यहां बताया गया है कि आप प्रतिशत कैसे पिक्सल में बदल सकते हैं और ईएमएस में:

     @ अगर $ currentUnit == प्रतिशत {@if $ convertUnit == px {@ वापसी का मूल्य * 16/100 + 0 पिक्स;}@ अगर $ convertUnit == ems {@ वापसी $ मान / 100 + 0em;}}     

यह अंक के पिक्सेल अंक की बारी है, ईएमएस के अंक, और प्रतिशत रूपांतरण के लिए अंक:

     @ अगर $ currentUnit == अंक {@if $ convertUnit == px {@ वापसी $ मान * 1. 3333 + 0 पिक्सेल;}@ अगर $ convertUnit == ems {@ वापसी का मूल्य $ 12 + 0em;}@ अगर $ convertUnit == प्रतिशत {@ परत का प्रतिशत ($ मूल्य / 12)}}     

और आप कर चुके हैं! Semaltट ने एक ऐसा फ़ंक्शन बनाया जो आपको किसी भी इकाई के बीच किसी भी मूल्य के लिए स्वतंत्र रूप से कनवर्ट करने देता है।

योग अप करने के लिए

सैस में टाइपोग्राफिक यूनिट रूपांतरण के लिए अंतिम कार्य इस तरह दिखता है:

     @ फ़ंक्शन कनवर्ट ($ value, $ currentUnit, $ convertUnit) {@if $ currentUnit == px {@if $ convertUnit == ems {@ वापसी का मूल्य $ 16 + 0em;}@ अगर $ convertUnit == प्रतिशत {वापसी का प्रतिशत ($ मूल्य / 16);}} @ अगर $ currentUnit == ईएमएस {@if $ convertUnit == px {@ वापसी का मूल्य * 16 + 0 पिक्सेल;}@ अगर $ convertUnit == प्रतिशत {@ परत का प्रतिशत ($ मान);}} @ अगर $ currentUnit == प्रतिशत {@if $ convertUnit == px {@ वापसी का मूल्य * 16/100 + 0 पिक्स;}@ अगर $ convertUnit == ems {@ वापसी $ मान / 100 + 0em;}} @ अगर अगर $ currentUnit == अंक {@if $ convertUnit == px {@ वापसी $ मान * 1. 3333 + 0 पिक्सेल;}@ अगर $ convertUnit == ems {@ वापसी का मूल्य $ 12 + 0em;}@ अगर $ convertUnit == प्रतिशत {@ परत का प्रतिशत ($ मूल्य / 12)}}}     

यह थोड़ा चुनौतीपूर्ण दिखता है, लेकिन यह सब वास्तव में करता है प्रारंभिक आकार लेता है, फिर उसे पहली इकाई से दूसरे इकाई में परिवर्तित कर देता है, और परिणाम को वापस लौटाता है एकमात्र कठिन हिस्सा है जो कि गणना करने के लिए का ट्रैक रखता है

यदि आप इस फ़ंक्शन के साथ खेलना चाहते हैं, तो आप इस Semalt डेमो में ऐसा कर सकते हैं।

हमेशा की तरह, वेब पर टाइपोग्राफी के साथ काम करते समय, जो आपको सबसे ज्यादा मदद करता है, चोरी, उलझन, पुनर्व्यवस्थित और अन्यथा इसका प्रयोग करें - zebra stoff jersey.

यदि आपके पास इस Sass इकाइयों रूपांतरण फ़ंक्शन के लिए कोई अन्य भयानक विचार हैं, तो नीचे दिए गए टिप्पणियों के अनुभाग में हमें बताएं।

March 1, 2018