我在我的项目中使用react-icons,这个很棒的软件包提供的是将所有免费的字体和图像放在一个地方,并作为react组件。我试图实现的是从组件设置一个backgroundImage,如:
<content className="content cover-content" style={{backgroundImage: `url(${<FaCar size={48} color="red"/>})`}}>
我不知道为什么这不起作用,理论上应该起作用,任何想法?
guicsvcw1#
backgroundImage是一个CSS属性,需要一个指向图像的URL路径,你可以下载图标并将其本地添加到你的项目中。或者,您可以通过使用CSS属性z-index来实现相同的结果使用styled-components,我们可以通过使用CSS属性z-index将组件添加到主内容后面来设置组件的样式。
backgroundImage
z-index
const Icon = styled.section` .. z-index: -1; `;
然后,我们将其添加到Icon周围,以根据需要设置其样式。
<Icon> <FaCar /> </Icon>
沙盒链接:https://codesandbox.io/s/wild-grass-sk9d9?file=/src/App.js
gajydyqb2#
这是不可能的,因为CSS规则不能包含HTML代码。通过使用React组件,你正在做的就是这样。在这里指定背景图像的唯一方法是使用标准方法,在CSS规则中指定图像的URL。
23c0lvtd3#
创建组件以使其可重用
import React from 'react'; import ReactDOMServer from 'react-dom/server'; const BackgroundIcon = ({ onClick = () => { }, children, className, Icon, backgroundImgSize = 124, top = 20, right = 20 }) => { const iconString = ReactDOMServer.renderToString(<Icon />); const encodedIcon = encodeURIComponent(iconString); const backgroundImage = `url("data:image/svg+xml;charset=UTF-8,${encodedIcon}")`; return ( <div onClick={onClick} style={{ backgroundImage, backgroundSize: `${backgroundImgSize}px`, backgroundRepeat: 'no-repeat', backgroundPosition: `${top}% ${right}%`, }} > {children} </div> ); }; export default BackgroundIcon;
像这样使用它
<BackgroundIcon backgroundImgSize={124} Icon={() => <AnIcon >} strokeWidth={1.2} />} top={98} right={0} > </BackgroundIcon>
3条答案
按热度按时间guicsvcw1#
backgroundImage
是一个CSS属性,需要一个指向图像的URL路径,你可以下载图标并将其本地添加到你的项目中。或者,您可以通过使用CSS属性
z-index
来实现相同的结果使用styled-components,我们可以通过使用CSS属性z-index将组件添加到主内容后面来设置组件的样式。
然后,我们将其添加到Icon周围,以根据需要设置其样式。
沙盒链接:https://codesandbox.io/s/wild-grass-sk9d9?file=/src/App.js
gajydyqb2#
这是不可能的,因为CSS规则不能包含HTML代码。通过使用React组件,你正在做的就是这样。在这里指定背景图像的唯一方法是使用标准方法,在CSS规则中指定图像的URL。
23c0lvtd3#
创建组件以使其可重用
像这样使用它