ฉันได้ทำการสาธิต CodePen ที่มีปัญหาเดียวกันกับการฝัง SVG แบบอินไลน์ลงใน CSS โซลูชันที่ทำงานกับ SCSS คือการสร้างฟังก์ชั่นการเข้ารหัส URL อย่างง่าย
ฟังก์ชั่นการเปลี่ยนสตริงสามารถสร้างได้จากฟังก์ชั่น str-slice, str-index ในตัว (ดูcss-tricks , ขอบคุณ Hugo Giraudel)
จากนั้นเพียงแค่เปลี่ยน%
, <
, >
, "
, '
,
กับ%xx
รหัส:
@function svg-inline($string){
$result: str-replace($string, "<svg", "<svg xmlns='http://www.w3.org/2000/svg'");
$result: str-replace($result, '%', '%25');
$result: str-replace($result, '"', '%22');
$result: str-replace($result, "'", '%27');
$result: str-replace($result, ' ', '%20');
$result: str-replace($result, '<', '%3C');
$result: str-replace($result, '>', '%3E');
@return "data:image/svg+xml;utf8," + $result;
}
$mySVG: svg-inline("<svg>...</svg>");
html {
height: 100vh;
background: url($mySVG) 50% no-repeat;
}
นอกจากนี้ยังมีimage-inline
ฟังก์ชั่นตัวช่วยในเข็มทิศ แต่เนื่องจากไม่รองรับใน CodePen โซลูชันนี้จึงอาจมีประโยชน์
การสาธิตเกี่ยวกับ CodePen: http://codepen.io/terabaud/details/PZdaJo/