नहीं दिखने वाले टेक्स्ट के फ़्लैश से बचना

Katie Hempenius
Katie Hempenius

इस कोड लैब में, Font Face Observer का इस्तेमाल करके, टेक्स्ट को तुरंत दिखाने का तरीका बताया गया है.

Font Face Observer एक स्क्रिप्ट है, जो फ़ॉन्ट लोड होने का पता लगाती है. fontfaceobserver.js फ़ाइल, प्रोजेक्ट डायरेक्ट्री में पहले से सेव है. इसलिए, आपको इसे अलग से जोड़ने की ज़रूरत नहीं है. हालांकि, आपको इसके लिए एक स्क्रिप्ट टैग जोड़ना होगा.

  • प्रोजेक्ट में बदलाव करने के लिए, बदलाव करने के लिए रीमिक्स करें पर क्लिक करें.
  • fontfaceobserver.js के लिए स्क्रिप्ट टैग को index.html में जोड़ें:
  <div class="text">Some text.</div>
  <script src="fontfaceobserver.js" type="text/javascript"></script>
</body>

Font Face Observer का इस्तेमाल करना

ऑब्ज़र्वर बनाना

पेज पर इस्तेमाल किए गए हर फ़ॉन्ट फ़ैमिली के लिए, एक ऑब्ज़र्वर बनाएं.

  • fontfaceobserver.js स्क्रिप्ट के बाद, यह स्क्रिप्ट जोड़ें. इससे "Pacifico" और "Roboto" फ़ॉन्ट फ़ैमिली के लिए ऑब्ज़र्वर बन जाते हैं:
  <script src="fontfaceobserver.js" type="text/javascript"></script>
  <script type="text/javascript">
    const pacificoObserver = new FontFaceObserver('Pacifico');
    const robotoObserver = new FontFaceObserver('Roboto');
  </script>
<body>

अगर आपको कभी यह नहीं पता कि आपको कौनसे फ़ॉन्ट फ़ेस ऑब्ज़र्वर बनाने हैं, तो अपनी सीएसएस में font-family एलान देखें. इन एलान के font-family नाम को FontFaceObserver() पर पास करें. फ़ॉलबैक फ़ॉन्ट के लिए, फ़ॉन्ट ऑब्ज़र्वर बनाने की ज़रूरत नहीं है.

उदाहरण के लिए, अगर आपकी सीएसएस:

font-family: "Times New Roman", Times, serif;

आपको FontFaceObserver('Times New Roman') जोड़ना होगा. Times और serif, फ़ॉलबैक फ़ॉन्ट हैं. इसलिए, आपको उनके लिए FontFaceObservers का एलान करने की ज़रूरत नहीं होगी.

फ़ॉन्ट लोड होने का पता लगाना

फ़ॉन्ट लोड का पता लगाने वाला कोड इस तरह दिखता है:

robotoObserver.load().then(function(){
  console.log("Hooray! Font loaded.");
});

robotoObserver.load() एक प्रॉमिस है, जो फ़ॉन्ट लोड होने पर रिज़ॉल्व हो जाता है.

डेमो साइट में दो अलग-अलग फ़ॉन्ट का इस्तेमाल किया जाता है, इसलिए आपको दोनों फ़ॉन्ट लोड होने तक इंतज़ार करने के लिए Promise.all() का इस्तेमाल करना होगा.

  • इस प्रॉमिस को अपनी स्क्रिप्ट में जोड़ें. इसके ठीक नीचे उस FontFaceObservers का इस्तेमाल करता है जिसका एलान आपने अभी-अभी किया है:
Promise.all([
  pacificoObserver.load(),
  robotoObserver.load()
]).then(function(){
  /* Do things */
});

✔️चेक-इन करना

आपकी स्क्रिप्ट अब इस तरह दिखनी चाहिए:

<script type="text/javascript">
const pacificoObserver = new FontFaceObserver('Pacifico');
const robotoObserver = new FontFaceObserver('Roboto');

Promise.all([
  pacificoObserver.load(),
  robotoObserver.load()
]).then(function(){
  /* Do things */
});
</script>

fonts-loaded क्लास लागू करें

  • स्क्रिप्ट में /* Do things */ टिप्पणी को इस लाइन से बदलें:
document.documentElement.classList.add("fonts-loaded");

दोनों फ़ॉन्ट लोड होने के बाद, यह दस्तावेज़ के रूट एलिमेंट (<html> टैग) में fonts-loaded क्लास जोड़ता है.

✔️चेक-इन करना

आपकी पूरी स्क्रिप्ट कुछ इस तरह दिखनी चाहिए:

<script type="text/javascript">
  const pacificoObserver = new FontFaceObserver('Pacifico');
  const robotoObserver = new FontFaceObserver('Roboto');

  Promise.all([
    pacificoObserver.load(),
    robotoObserver.load()
  ]).then(function(){
    document.documentElement.className += " fonts-loaded";
  });
</script>

सीएसएस अपडेट करना

आपके पेज को इस तरह स्टाइल किया जाना चाहिए कि शुरुआत में सिस्टम फ़ॉन्ट का इस्तेमाल किया जा सके और fonts-loaded क्लास लागू होने के बाद पसंद के मुताबिक फ़ॉन्ट इस्तेमाल किए जा सकें.

  • सीएसएस को अपडेट करें:
.header {
html.fonts-loaded .header {
  font-family: 'Pacifico', cursive;
}

.text
html.fonts-loaded .text {
  font-family: 'Roboto', sans-serif;
}

पुष्टि करें

  • साइट की झलक देखने के लिए, ऐप्लिकेशन देखें दबाएं. इसके बाद, फ़ुलस्क्रीनफ़ुलस्क्रीन दबाएं.

अगर पेज ऐसा दिखता है, तो इसका मतलब है कि आपने Font Face Observer को लागू कर लिया है और "अनदेखे जा सकने वाले टेक्स्ट का फ़्लैश" हटा दिया है.

कर्सिव फ़ॉन्ट में लिखी गई हेडिंग.