2017-04-04 7 views
5

मैंने एक ढाल बनाया है जिसमें 11 हार्ड स्टॉप हैं, जो 11 अलग-अलग बक्से का भ्रम पैदा कर रहे हैं।मैं SASS/SCSS में हार्ड-स्टॉप पृष्ठभूमि कैसे बना सकता हूं?

enter image description here

यह अब खड़ा है, वहाँ चौड़ाई रेखीय ग्रेडिएंट में हार्ड-कोडेड की एक% है। मैं मदद नहीं कर सकते लेकिन वहाँ एक और अधिक कुशल तरीके से लगता है बल्कि इस तरह के रूप में इस बाहर कोडिंग से (एससीएसएस के माध्यम से?):

.color-bar { 
 
     background: linear-gradient(to left, 
 
     rgba(0, 0, 0, 0) 0%, 
 
     rgba(0, 0, 0, 0) 9.09%, 
 
     rgba(0, 0, 0, .1) 9.09%, 
 
     rgba(0, 0, 0, .1) 18.18%, 
 
     rgba(0, 0, 0, .2) 18.18%, 
 
     rgba(0, 0, 0, .2) 27.27%, 
 
     rgba(0, 0, 0, .3) 27.27%, 
 
     rgba(0, 0, 0, .3) 36.36%, 
 
     rgba(0, 0, 0, .4) 36.36%, 
 
     rgba(0, 0, 0, .4) 45.45%, 
 
     rgba(0, 0, 0, .5) 45.45%, 
 
     rgba(0, 0, 0, .5) 54.54%, 
 
     rgba(0, 0, 0, .6) 54.54%, 
 
     rgba(0, 0, 0, .6) 63.63%, 
 
     rgba(0, 0, 0, .7) 63.63%, 
 
     rgba(0, 0, 0, .7) 72.72%, 
 
     rgba(0, 0, 0, .8) 72.72%, 
 
     rgba(0, 0, 0, .8) 81.81%, 
 
     rgba(0, 0, 0, .9) 81.81%, 
 
     rgba(0, 0, 0, 1) 90.09%, 
 
     rgba(0, 0, 0, 1) 100%); 
 
     height: 50px; 
 
     width: 550px; 
 
}
<div class="color-bar"></div>

Here's a rough Codepen in action.

किसी भी इनपुट आप कर सकते हैं के लिए धन्यवाद प्रदान करें।

+0

मेरा मतलब है, अगर आपको वांछित परिणाम मिल गया तो मुझे नहीं पता कि समस्या वास्तव में क्या है। यह सुंदर नहीं है - यकीन है, लेकिन कौन परवाह करता है? यह पूरी तरह से वैध कोड है। – Chris

+0

@Chris मुझे लगता है कि यदि ओपी एससीएसएस विधि के लिए पूछ रहा है तो वह फ़ंक्शन बनाना है जिसे आप पुन: उपयोग कर सकते हैं, हो सकता है कि आप प्रत्येक बार अपनी खुद की गणना करने के बजाय ग्रेडियेंट पर चरणों की संख्या निर्धारित करने के लिए केवल एक संख्या बदल सकें – DaniP

+0

@DaniP, हाँ, यह एक पुन: प्रयोज्य दृष्टिकोण से समझ में आता है, अगर यह सवाल है। यदि नहीं, तो मैं व्यक्तिगत रूप से कुछ भी बदलने का बिंदु नहीं देखता क्योंकि आप अभी भी अंत में सीएसएस प्राप्त करते हैं। – Chris

उत्तर

3

मुझे नगण्य का एक सा लिया, लेकिन यहाँ यह है:

@function hard-stops($direction, $from, $to, $steps) { 
    $output: unquote("linear-gradient(") + $direction; 
    @for $i from 0 through $steps { 
    $output: $output + ', ' 
        + mix($from, $to, $i/$steps) + ' ' 
        + percentage($i/($steps+1)) + ', ' 
        + mix($from, $to, $i/$steps) + ' ' 
        + percentage(($i+1)/($steps+1)); 
    } 
    $output: $output + ')'; 

    @return $output; 
} 
.color-bar { 
    height: 50px; 
    width: 550px; 
    background: hard-stops(to left, rgba(0,0,0,1), rgba(0,0,0,0), 10); 
} 

jsFiddle

सीमा है: किसी को मिश्रित रंगों को पारित करने की आवश्यकता है (उदाहरण के लिए, black, नहीं, मुझे नहीं पता कि - मैं sass में कोई विशेषज्ञ नहीं हूं)।

+0

वाह, इसे आने का बहुत अच्छा तरीका है। मैंने कलर-मिक्सिंग नहीं माना था। [यहां मेरा मोटा प्रयास है] (http://codepen.io/jwindeknecht/pen/XMGwNb) जो अन्य रंगों का उपयोग करता है। –

+1

@ जोएडब्ल्यू, ठीक है, यह समझ में नहीं आया, भले ही आपका उदाहरण केवल 1 रंग का उपयोग करता हो। अंत में, रंग मिश्रण एक प्रमुख कारणों में से एक है जो लोग 'एसएएस' का उपयोग करते हैं। वह और शायद घोंसले चयनकर्ताओं और 'मीडिया 'प्रश्न। आपके पहले प्रश्न पर बधाई, बीटीडब्ल्यू, यह दुर्लभ है कि लोग इस तरह के अच्छे/अच्छी तरह से प्राप्त प्रश्न से शुरू होते हैं। [So] और खुश कोडिंग में आपका स्वागत है! ::} <(((*>: :) –

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