Nó thực sự tốt đối với những người có thể sử dụng preprocessors trong sản xuất, bởi "nội tuyến" SVG nền, và bit của SASS mixins
, trong đó "cắt" toàn bộ svg
vô nghĩa, để truy cập vào các phần bạn muốn thao tác qua SASS variables
.
Trong kịch bản ban đầu của bạn, bạn có một yếu tố
<div class="element1"></div>
,
vì vậy bạn cần một mixin/function
mà sẽ inline SVG cho bạn.Hãy nói rằng bạn muốn kiểm soát của fill
, vì vậy:
@mixin inline-svg($color, $svg-content) {
$start: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>path { fill:#{$color}; }</style>';
$end: '</svg>';
background-image: url('data:image/svg+xml;utf8, #{$start}#{$svg-content}#{$end}');
}
nơi $svg-content
biến là <svg>
công cụ của bạn trừ <style>
yếu tố (mà bạn muốn truy cập từ bên trong mixin
) và gói svg
thẻ ,, ví dụ: $svg-content = "<path .... />"
này chỉ cần được bao gồm trong giá trị được truyền bên trong:
@include inline-svg(salmon, $svg-content);
tóm whol e điều lên, đây là một ví dụ Sass mã:
$svg-content = "<path .... />"
@mixin inline-svg($color, $svg-content) {
$start: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><style>path { fill:#{$color}; }</style>';
$end: '</svg>';
background-image: url('data:image/svg+xml;utf8, #{$start}#{$svg-content}#{$end}');
}
.element1 {
@include inline-svg(rgba(0,0,0,0.6), $svg-content);
}
Tôi nghĩ khả năng đây là khá lớn (cũng có những hạn chế ở đây cách tiếp cận đó). Tôi thực sự chuyển một số SASS map
tới mixin
của mình với css
kiểu được định nghĩa là key
, value
cặp, để tiêm toàn bộ nhóm css
kiểu vào <style>
một phần của svg
. Vì vậy, về mặt kỹ thuật có thể, nhưng yêu cầu sự hợp tác hơn, nhưng khi bạn hoàn thành việc này, bạn sẽ nhận được lợi ích khi sử dụng lại số mixin
trong suốt (các) dự án của bạn, điều này thật tuyệt.
có vẻ như vậy. cảm ơn. sẽ được gọn gàng mặc dù eh? – Jonathon
@joneb Tôi không nghĩ rằng nó sẽ được gọn gàng, tôi nghĩ rằng nó sẽ gây ra các vấn đề tham chiếu vòng tròn. :) – Phrogz
vâng, bạn nói đúng. việc sử dụng gọn gàng trong trường hợp này có liên quan đến: "Tôi muốn nó hoạt động cho mục đích tôi có ngay bây giờ khi không xem xét các tác động rộng hơn": D – Jonathon