css直接引用svg代码

2022-12-29 14:09:06 浏览数 (2)

一切安乐,无不来自困苦。——《我是猫》

有些时候我们想直接引入一个svg图标,又不想创建svg文件,或者编写svg代码到html中,想直接在css中引入

可以转码 加前缀直接引用,这是一段svg代码

代码语言:javascript复制
<!-- svg: first layer -->
<svg viewBox='0 0 161 161' xmlns='http://www.w3.org/2000/svg'>
  <filter id='noiseFilter'>
    <feTurbulence 
      type='fractalNoise' 
      baseFrequency='0.65' 
      numOctaves='3' 
      stitchTiles='stitch'/>
  </filter>
  
  <rect width='100%' height='100%' filter='url(#noiseFilter)'/>
</svg>

我们复制下来,用`包裹,转码然后加个前缀

代码语言:javascript复制
const svg = `<!-- svg: first layer -->
<svg viewBox='0 0 161 161' xmlns='http://www.w3.org/2000/svg'>
  <filter id='noiseFilter'>
    <feTurbulence 
      type='fractalNoise' 
      baseFrequency='0.65' 
      numOctaves='3' 
      stitchTiles='stitch'/>
  </filter>
  
  <rect width='100%' height='100%' filter='url(#noiseFilter)'/>
</svg>`;
`url("data:image/svg xml,${svg.replace(/[rn%#()<>?[\]^`{|}]/g,encodeURIComponent)}")`

得到的地址,我们放入background中:

效果很棒

思路来源:

https://css-tricks.com/grainy-gradients/

https://grainy-gradients.vercel.app/

0 人点赞