html - 我无法在 React 中将 SVG 设置为背景图片

标签 html css reactjs svg

我正在尝试将 svg 设置为我的 Container div 的背景图像。但是出了点问题。 我的 SVG 箭头函数:-

const CurveOne = () => {
  return (
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
      <path
        fill="#EEEEEE"
        fill-opacity="1"
        d="M0,192L48,165.3C96,139,192,85,288,69.3C384,53,480,75,576,90.7C672,107,768,117,864,128C960,139,1056,149,1152,128C1248,107,1344,53,1392,26.7L1440,0L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"
      ></path>
    </svg>
  );
};

export default CurveOne;

我的容器样式的 div 组件:-

const Container = styled.div`
background-image: url(${CurveOne});
`;

最佳答案

background-image: url(...) 中,url 应该是一个字符串,但是您传递了一个函数 CurveOne,它将被强制转换为一个字符串并导致无效的样式。

相反,您可以为字符串使用数据 uri。 在线提供一种转换工具:https://heyallan.github.io/svg-to-data-uri/

或者,如果你想使用这个函数,你可以引用https://heyallan.github.io/svg-to-data-uri/js/svg-to-data-uri.js中的svgToDataURI函数。 (我不确定我是否可以在我的答案中复制该功能)然后可以像下面这样使用它:

let svgString = 
`
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
      <path
        fill="#EEEEEE"
        fill-opacity="1"
        d="M0,192L48,165.3C96,139,192,85,288,69.3C384,53,480,75,576,90.7C672,107,768,117,864,128C960,139,1056,149,1152,128C1248,107,1344,53,1392,26.7L1440,0L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"
      ></path>
    </svg>
`

let dataURI = svgToDataURI(svgString);

const Container = styled.div`
background-image: url(${dataURI})
`;

关于html - 我无法在 React 中将 SVG 设置为背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73220489/

相关文章:

javascript - 使用 scrollTop 替换粘性导航栏以获得 60 FPS 性能的替代方案?

html - 将单行文本包装在动态 div 中

javascript - 单击时更改图像的 z-index

html - 具有相对定位的 CSS div 在 IE 中无法正常工作

html - 表格使 <td> 响应

html - 如何在不使用 JavaScript 的情况下禁用 html 中的右键单击?

html - 放大 SVG 仅在 Chrome 中模糊

reactjs - Cypress - 在继续之前等待下一个按钮重新出现

javascript - 如何检查 props 中的元素是否匹配条件?

css - 在 Storybook v6.4 中加载 css 模块类时出现问题