2017-04-04 18 views
5

Tôi đã tạo ra một gradient có 11 điểm dừng cứng, tạo ra ảo giác của 11 hộp riêng biệt.Làm cách nào để tạo hình nền cứng trong SASS/SCSS?

enter image description here

Khi đứng bây giờ, có một% độ rộng mã hóa cứng vào gradient tuyến tính. Tôi không thể không nghĩ rằng có một cách hiệu quả hơn chứ không phải mã hóa này ra như vậy (thông qua SCSS?):

.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.

Thanks cho bất kỳ đầu vào bạn có thể cung cấp.

+0

Ý tôi là, nếu bạn có kết quả mong muốn, tôi không thấy vấn đề thực sự là gì. Nó không đẹp - chắc chắn, nhưng ai quan tâm? Đây là mã hoàn toàn hợp lệ. – Chris

+0

@Chris Tôi đoán Nếu OP yêu cầu phương pháp SCSS là tạo một hàm mà bạn có thể sử dụng lại, có thể bạn chỉ cần thay đổi số để đặt số bước trên gradient thay vì thực hiện các phép tính của riêng bạn mỗi lần – DaniP

+0

@ DaniP, vâng điều đó sẽ có ý nghĩa từ một quan điểm có thể sử dụng lại, nếu đó là câu hỏi. Nếu không, tuy nhiên, cá nhân tôi không thấy điểm thay đổi bất cứ điều gì như bạn vẫn nhận được css cuối cùng anyway. – Chris

Trả lời

3

Đã cho tôi một chút không quan trọng, nhưng ở đây nó là:

@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.

Giới hạn là: cần phải vượt qua các màu có thể trộn (black chẳng hạn, không biết tại sao - Tôi không phải là chuyên gia trong số sass).

+0

Cách tiếp cận tuyệt vời, rất hay. Tôi đã không xem xét pha trộn màu sắc. [Đây là nỗ lực khó khăn của tôi] (http://codepen.io/jwindeknecht/pen/XMGwNb) sử dụng các màu khác. –

+1

@ JoeW, Vâng, nó không có ý nghĩa không, ngay cả khi ví dụ của bạn chỉ sử dụng 1 màu. Cuối cùng, pha trộn màu sắc là một trong những lý do chính khiến mọi người sử dụng 'sass'. Đó và có thể là bộ chọn làm tổ và truy vấn '@ media'. Xin chúc mừng câu hỏi đầu tiên của bạn, btw, Rất hiếm khi mọi người bắt đầu với một câu hỏi hay được đón nhận như vậy. Chào mừng bạn đến với [như vậy] & mã hóa hạnh phúc! ::} <(((*>: :) –

Các vấn đề liên quan