2012-08-02 15 views
30

मैं अपने रेल ऐप में बूटस्ट्रैप-एसएएस का उपयोग कर रहा हूं। मैं बूटस्ट्रैप-एसएएस वैरिएबल $ navbarBackground को ओवरराइड करना चाहता हूं। बूटस्ट्रैप-सास भी रंगों के लिए चर परिभाषित करता है। तो हेक्स कोड का उपयोग करने के बजाय मैं वैरिएबल $ लाल का उपयोग करना चाहता हूं जो इसे परिभाषित करता है।क्या मैं आयात किए जाने के बाद सास चर को ओवरराइड कर सकता हूं?

$navbarBackground: #9d261d; 
@import "bootstrap"; 

लेकिन अगर मैं तो निम्न कार्य करें -

$navbarBackground: $red; 
@import "bootstrap"; 

यह मुझे एक त्रुटि दे देंगे के रूप में चर $ लाल केवल जो अगली पंक्ति में आयात किया जाता है बूटस्ट्रैप फ़ाइल परिभाषित किया गया है।

तो क्या कोई तरीका है कि मैं आयात किए जाने के बाद सास चर को ओवरराइड कर सकता हूं?

संपादित

मैं GitHub पर परियोजना धकेल दिया - https://github.com/murtaza52/rails-base

और यूआरएल स्थानीय होस्ट पर पहुँचा जा सकता है: 3000/पदों/

उत्तर

21

यहाँ मैं एक क्या महसूस किया है। आयात किए जाने के बाद आप सास चर को ओवरराइड कर सकते हैं। लेकिन संशोधन केवल ओवरराइडिंग के बाद उपयोग में दिखाई देगा। चूंकि navbar को $navbarBackground को ओवरराइड करने से पहले शैलियों को मिला है, इसलिए वेरिएबल ओवरराइड करने से स्टाइल नहीं बदलेगा। उदाहरण नीचे देखें।

@import "bootstrap"; 
@navbarBackground: $red; 
// This doesn't work. Navbar will still be same color. 
// But if you do write styles for navbar again 
.navbar-inner { background: $navbarBackground; } 
// Now, Navbar will have a red background 

@import "bootstrap"; 
$blue: $white; 
// After this line, whenever your reference $blue, it'll generate white color. 
+0

धन्यवाद कुलबीर के लिए एक "जब तक यह पहले से ही असाइन किया गया है" क्वालीफायर कहा कि चाल किया था की तरह है ! हालांकि जब मैं मणि खोलकर _bootstrap.scss को देखता हूं, तो मुझे लगता है कि यह निम्न पंक्ति '// कोर वैरिएबल और मिक्सिन @import "बूटस्ट्रैप/चर" के साथ शुरू होता है; // कस्टम रंगों, फ़ॉन्ट आकारों, आदि के लिए इसे संशोधित करें @import "बूटस्ट्रैप/मिक्सिन"; 'क्या मेरे लिए पहले चर को आयात करना और उन्हें संशोधित करना संभव है, और फिर पूरे बूटस्ट्रैप को आयात करें? – murtaza52

+0

यदि आप 'बूटस्ट्रैप/चर' आयात करते हैं, तो चर संशोधित करें और फिर 'बूटस्ट्रैप' आयात करें, मुझे लगता है कि चर फिर से ओवरराइड हो जाएंगे। चूंकि, बूटस्ट्रैप फिर से 'बूटस्ट्रैप/चर' आयात करेगा। इस योग्य यद्यपि एक प्रयास। –

+0

यह मेरे लिए धन्यवाद धन्यवाद! – Proxy32

17

मैं अपनी application.scss फ़ाइल में व्यक्तिगत स्कैस फ़ाइलों को आयात करके कर रहा हूं। इस लेखन के बजाय:

@import "bootstrap"; 

मैं पहली बार आयात चर, उन्हें अनुकूलित, और उसके बाद ही बूटस्ट्रैप के बाकी आयात करते हैं।

// Core variables and mixins 
@import "../../../vendor/assets/stylesheets/bootstrap/variables"; 

$body-bg: #333333; 

@import "../../../vendor/assets/stylesheets/bootstrap/mixins"; 

// Reset 
@import "../../../vendor/assets/stylesheets/bootstrap/normalize"; 
@import "../../../vendor/assets/stylesheets/bootstrap/print"; 

// Core CSS 
@import "../../../vendor/assets/stylesheets/bootstrap/scaffolding"; 
@import "../../../vendor/assets/stylesheets/bootstrap/type"; 
@import "../../../vendor/assets/stylesheets/bootstrap/code"; 
@import "../../../vendor/assets/stylesheets/bootstrap/grid"; 
@import "../../../vendor/assets/stylesheets/bootstrap/tables"; 
@import "../../../vendor/assets/stylesheets/bootstrap/forms"; 
@import "../../../vendor/assets/stylesheets/bootstrap/buttons"; 

// Components 
@import "../../../vendor/assets/stylesheets/bootstrap/component-animations"; 
@import "../../../vendor/assets/stylesheets/bootstrap/glyphicons"; 
@import "../../../vendor/assets/stylesheets/bootstrap/dropdowns"; 
@import "../../../vendor/assets/stylesheets/bootstrap/button-groups"; 
@import "../../../vendor/assets/stylesheets/bootstrap/input-groups"; 
@import "../../../vendor/assets/stylesheets/bootstrap/navs"; 
@import "../../../vendor/assets/stylesheets/bootstrap/navbar"; 
@import "../../../vendor/assets/stylesheets/bootstrap/breadcrumbs"; 
@import "../../../vendor/assets/stylesheets/bootstrap/pagination"; 
@import "../../../vendor/assets/stylesheets/bootstrap/pager"; 
@import "../../../vendor/assets/stylesheets/bootstrap/labels"; 
@import "../../../vendor/assets/stylesheets/bootstrap/badges"; 
@import "../../../vendor/assets/stylesheets/bootstrap/jumbotron"; 
@import "../../../vendor/assets/stylesheets/bootstrap/thumbnails"; 
@import "../../../vendor/assets/stylesheets/bootstrap/alerts"; 
@import "../../../vendor/assets/stylesheets/bootstrap/progress-bars"; 
@import "../../../vendor/assets/stylesheets/bootstrap/media"; 
@import "../../../vendor/assets/stylesheets/bootstrap/list-group"; 
@import "../../../vendor/assets/stylesheets/bootstrap/panels"; 
@import "../../../vendor/assets/stylesheets/bootstrap/wells"; 
@import "../../../vendor/assets/stylesheets/bootstrap/close"; 

// Components w/ JavaScript 
@import "../../../vendor/assets/stylesheets/bootstrap/modals"; 
@import "../../../vendor/assets/stylesheets/bootstrap/tooltip"; 
@import "../../../vendor/assets/stylesheets/bootstrap/popovers"; 
@import "../../../vendor/assets/stylesheets/bootstrap/carousel"; 

// Utility classes 
@import "../../../vendor/assets/stylesheets/bootstrap/utilities"; 
@import "../../../vendor/assets/stylesheets/bootstrap/responsive-utilities"; 


body { 
    padding-top: 60px; 
} 
15

बूटस्ट्रैप-सास शैली $brand-success: #5cb85c !default; में /bootstrap/_variables.scss में कई चर को परिभाषित किया गया है। सास कीवर्ड !default का मतलब:

आप अगर वे पहले से मूल्य के अंत करने के लिए डिफ़ॉल्ट ध्वज जोड़कर निर्दिष्ट नहीं किए जाते चर को असाइन कर सकते। इसका अर्थ यह है कि यदि चर पहले से ही असाइन किया गया है, तो इसे फिर से असाइन नहीं किया जाएगा, लेकिन यदि उसके पास अभी तक कोई मान नहीं है, तो उसे एक दिया जाएगा। (→sass documentation)

इसका मतलब है आप बस बूटस्ट्रैप-सास आयात करने से पहले, अपने चर पहले परिभाषित करने के लिए किया है। मैं इसे इतना पसंद करते हैं:

@import "common/project_variables"; 
@import "bootstrap"; 

मेरे फ़ाइल project_variables.scss शामिल हैं - दूसरों के बीच में - वास्तव में सभी बूटस्ट्रैप चर मैं ओवरराइड करना चाहते।

+0

आयात का आदेश बिल्कुल विपरीत होता है, तो आप कम चर बूटस्ट्रैप का उपयोग कर रहे है। कम होने पर, आप '@ आयात' 'बूटस्ट्रैप' करेंगे; ''import" सामान्य/project_variables "से पहले;' – Yiling

+0

धन्यवाद * बूटस्ट्रैप से पहले यह सबकुछ * आयात चर * आयात करें। कभी नहीं पता था कि 'डिफ़ॉल्ट' क्या है, भयानक का जवाब! – JREAM

0

बूटस्ट्रैप चर !default नियम का उपयोग करते हैं।

डिफ़ॉल्ट नियम:

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

यह यह क्या लगता है जैसे:

$example: 'value' !default; 

तो का उपयोग कर सास !default, अपने चर असाइनमेंट

संबंधित मुद्दे

 संबंधित मुद्दे