使用 Material ui svg 图标作为背景图像

Joh*_*ian 8 html css reactjs material-ui google-material-icons

我可以使用@material-ui/iconssvg 图像作为其他元素的背景吗?尝试了下面的代码但没有成功。

import CarIcon from '@material-ui/icons/DriveEtaRounded';

const carIcon = <CarIcon />

function Cover(){
  return (
    <div
        className={classes.cover}
        style={{ backgroundImage: 'url('+ carIcon+')' }}
    />
  )
}
Run Code Online (Sandbox Code Playgroud)

Láď*_*nek 10

@material-ui/icons<svg>是 React 组件,如果您开放其源代码,它们仅包含使用实用程序函数封装在标签中的 SVG 数据。但是,您可以通过直接使用它们和一些样式来模拟背景图像行为:

import CarIcon from '@material-ui/icons/DriveEtaRounded';

function Cover(){
  return (
    <div style={{position: 'relative', width: '200px', height: '100px'}}>
      <CarIcon style={{position: 'absolute', left: 0, top: 0, width: '100%', height: '100%'}} />
    </div>
  )
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例,但只要父元素的尺寸由其他内容设置,它就可以工作。您还可以通过添加到图标组件来模拟background-size: cover行为(默认值对应于)。这种方法的另一个好处是图标仍然是 SVG,并且可以进一步设置样式或动画。preserveAspectRatio='xMidYMid slice'contain