ब्रेकप्वाइंट.माइल फ़ाइल का मूल उपयोग क्या है?


10

ब्रेकपॉइंट्स का उद्देश्य `ब्रेकपॉइंट्स.इम्ल 'में परिभाषित क्या है?

मीडिया क्वेश्चन ब्रेकपॉइंट.आईएमएल में परिभाषित क्यों हैं, और सीएसएस फाइलों में नहीं?


ब्रेकपॉइंट्स हैं जहां एक उत्तरदायी डिज़ाइन विभिन्न उपकरणों पर सही ढंग से प्रदर्शित करने के लिए समायोजित करता है। ब्रेकप्वाइंट मॉड्यूल ब्रेकपॉइंट के उपयोग को मानकीकृत करता है, और मॉड्यूल और थीम को एक-दूसरे के ब्रेकपॉइंट को उजागर करने या उपयोग करने में सक्षम बनाता है। ब्रेकपॉइंट मॉड्यूल ऊंचाई, चौड़ाई और रिज़ॉल्यूशन ब्रेकप्वाइंट का ट्रैक रखता है।
क्लाइव

1
मैं इसे लागू करने के बारे में सोच रहा हूं क्योंकि मैं फाउंडेशन-आधारित कस्टम थीम का उपयोग करता हूं लेकिन यह मुझे दिखता है कि इस समय इसका कोई मतलब नहीं है। हां, उत्तरदायी चित्र मॉड्यूल हैं, लेकिन मूल रूप से यह सभी के लिए अच्छा है। मैं इसे भविष्य की एक विशेषता की तरह देखता हूं जो अच्छा है लेकिन यह नहीं जानता कि क्या यह कभी उपयोग किया जाएगा।

जवाबों:


7

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

वर्तमान में breakpoints.yml मुख्य रूप से JavaScript (JS) के लिए दिलचस्प है। उदाहरण के लिए कोर में टूलबार मॉड्यूल को देखें। ब्रेकपॉइंट की जानकारी 'drupalSettings' JS ऑब्जेक्ट को 'src / Element / Toolbar.php' में जोड़ा जाता है:

$breakpoints = static::breakpointManager()->getBreakpointsByGroup('toolbar');
if (!empty($breakpoints)) {
  $media_queries =  array();
  foreach ($breakpoints as $id => $breakpoint) {
    $media_queries[$id] = $breakpoint->getMediaQuery();
  }

  $element['#attached']['drupalSettings']['toolbar']['breakpoints'] = $media_queries;
}

फिर जेएस में रन-टाइम सेटिंग्स जैसा कि ऊपर परिभाषित है, में पढ़ा जाता है।

var options = $.extend(
  {
    breakpoints: {
      'toolbar.narrow': '',
      'toolbar.standard': '',
      'toolbar.wide': ''
    }
  },
  drupalSettings.toolbar
);

बाद में एक ईवेंट श्रोता प्रति ब्रेकप्वाइंट में जोड़ा जाता है ताकि स्क्रीन आकार में परिवर्तन होने पर 'कुछ' किया जा सके।

for (var label in options.breakpoints) {
  if (options.breakpoints.hasOwnProperty(label)) {
    var mq = options.breakpoints[label];
    var mql = Drupal.toolbar.mql[label] = window.matchMedia(mq);
    mql.addListener(Drupal.toolbar.mediaQueryChangeHandler.bind(null, model, label));
  }
}

एक परिवर्तन की स्थिति में प्रति ब्रेकपॉइंट पर विभिन्न क्रियाएं की जा सकती हैं।

Drupal.toolbar = {
  mediaQueryChangeHandler: function (model, label, mql) {
    switch (label) {
      case 'toolbar.narrow':
        model.set({
          isOriented: mql.matches,
          isTrayToggleVisible: false
        });
        break;

      case 'toolbar.standard':
        // Logic
        break;

      case 'toolbar.wide':
        // Logic
        break;

      default:
        break;
    }
  }
};

नोट : कोड उदाहरण Drupal Toolbar मॉड्यूल से लिया गया है और छीन लिया गया है। प्रेरणा के रूप में उपयोग करें, कार्यात्मक कोड के रूप में नहीं।

जेएस मीडियाक्वायरीज को सामान्य रूप से उपयोग करने के बारे में एक अच्छी व्याख्या यहां पाई जा सकती है: https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Testing_media_queries

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