2013-01-17 36 views
5

मैं एक मीडिया क्वेरी के अंदर सेट के रूप में mixins बजाय html में अन-अर्थ वर्ग के नाम को एम्बेड की एक वेबसाइट में उपयोग करने के लिए कक्षाओं का एक सेट का पुन: उपयोग करने के लिए कोशिश कर रहा हूँ।का प्रयोग कक्षा में mixin के रूप में मीडिया क्वेरी में सेट कम

यहां मेरी समस्या का एक उदाहरण है।

@media (min-width: 1000px) { 

    .foo{width:120px;} 
    .foo-2{width:150px;} 
} 
@media (max-width: 999px) { 

    .foo{width:110px;} 
    .foo-2{width:120px;} 
} 

.bar{.foo;} 
.bar-2{.foo;} 
.bar-3{.foo-2;} 

.bar-X कभी भी कोई शैलियों को लागू नहीं करेगा। मुझे लगता है कि यह हो रहा है क्योंकि कम से कम मीडिया प्रश्नों के अंदर .bar-X नहीं बना है, इसलिए कुछ भी लागू नहीं किया जाएगा।

इस कम में एक बग, या कुछ और मैं प्राप्त नहीं कर सकता है? इसके लिए एक कामकाज आदर्श होगा।

+0

मीडिया प्रश्न अनुभाग के ऊपर .foo घोषित करने के बारे में क्या, तो मीडिया प्रश्न गुणों को ओवरराइड कर देंगे और यह आपके बार-एक्स चयनकर्ताओं को फेंक देगा? – Lowkase

उत्तर

10

आपकी समस्या एक आम गलतफहमी है। कम प्रक्रिया@media क्वेरी, ब्राउज़र के बाद कम अपने काम किया है करता नहीं करता है। कम केवल सीएसएस कोड बना सकता है जिसे ब्राउज़र पढ़ने जा रहा है। तो @media कम करने के लिए "व्यर्थ" है, यह सिर्फ किसी भी अन्य चयनकर्ता (.someClass div table, आदि) की तरह है, यह केवल प्रक्रियाओं क्या @media ब्राउज़र की सेवा करने के लिए जा रहा है।

तो इसका मतलब है कि आपको @media ब्लॉक में @media के लिए अपने सभी कोड डालने की आवश्यकता है। लेकिन आप दोहराए गए कोड का गुच्छा भी नहीं चाहते हैं। बजाय, अपने @media कोड निर्धारित करते हैं, और फिर मीडिया के प्रश्नों से कि mixin कॉल करने के लिए एक मास्टर mixin बनाएँ:

@media (min-width: 1000px) { 
    .foo {width: 120px;} 
    .foo-2 {width: 150px;} 
    .bar {width: 120px;} 
    .bar-2 {width: 120px;} 
    .bar-3 {width: 150px;} 
} 
@media (max-width: 999px) { 
    .foo {width: 110px;} 
    .foo-2 {width: 120px;} 
    .bar {width: 110px;} 
    .bar-2 {width: 110px;} 
    .bar-3 {width: 120px;} 
} 

कुछ अधिक जानकारी मैं पर दिया है के लिए:

.makeFooGroup(@w1, @w2) { 
    .foo {width: @w1} 
    .foo-2{width: @w2} 
    .bar{.foo} 
    .bar-2{.foo} 
    .bar-3{.foo-2} 
} 

@media (min-width: 1000px) { 
    .makeFooGroup(120px, 150px); 
} 
@media (max-width: 999px) { 
    .makeFooGroup(110px, 120px); 
} 

इस सीएसएस का उत्पादन कम और @media इस से संबंधित, देखें:

  1. CSS pre-processor with a possibility to define variables in a @media query
  2. Media Query grouping instead of multiple scattered media queries that match
+0

ग्रेट उत्तर, मैं अभी इसे आजमाने की कोशिश कर रहा हूं। मैंने माना था कि समस्या कम से कम मीडिया प्रश्नों के साथ "चालाक" नहीं थी और समझने की कोशिश कर रहा था कि क्या हासिल करने की कोशिश कर रहा था। मैं उम्मीद कर रहा था कि कम से कम उन सभी बयानों को बनाने के लिए पर्याप्त स्मार्ट था जो उपयोगकर्ता के बिना मीडिया क्वेरी में मीडिया क्वेरी का संदर्भ लेते थे। – mattics

+0

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