Javascript 使用带有CSS模块的ReactJS对SVG元素进行样式化
我有一个在Javascript 使用带有CSS模块的ReactJS对SVG元素进行样式化,javascript,css,svg,reactjs,css-modules,Javascript,Css,Svg,Reactjs,Css Modules,我有一个在ReactJS上运行的应用程序。我使用的是内联样式。我有一个单独的带有图标的svg文件,我想在组件的css文件中对其进行样式化 下面是一个图标MyComponent/add.svg: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
ReactJS
上运行的应用程序。我使用的是内联样式。我有一个单独的带有图标的svg
文件,我想在组件的css
文件中对其进行样式化
下面是一个图标MyComponent/add.svg:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 533.333 533.333" style="enable-background:new 0 0 533.333 533.333;" xml:space="preserve;">
<g>
<path d="M516.667,200H333.333V16.667C333.333,7.462,325.871,0,316.667,0h-100C207.462,0,200,7.462,200,16.667V200H16.667 C7.462,200,0,207.462,0,216.667v100c0,9.204,7.462,16.666,16.667,16.666H200v183.334c0,9.204,7.462,16.666,16.667,16.666h100 c9.204,0,16.667-7.462,16.667-16.666V333.333h183.333c9.204,0,16.667-7.462,16.667-16.666v-100 C533.333,207.462,525.871,200,516.667,200z" />
</g>
</svg>
这是我的MyComponent/MyComponent.jsx中的一段代码
import React, { Component } from 'react';
import styles from './MyComponent.css';
export default class MyComponent extends Component {
render() {
return (
<div className={ styles.iconButton }>
<div className={ styles.iconAdd }></div>
<div>add</div>
</div>
);
}
}
import React,{Component}来自'React';
从“/MyComponent.css”导入样式;
导出默认类MyComponent扩展组件{
render(){
返回(
添加
);
}
}
它工作正常。但是,当我尝试为svg
项(例如:fill)应用样式时,我遇到了一个问题,它不起作用,没有任何变化
您是否应该推荐一种实施此案例的方法
感谢收看这个问题。我需要在我的应用程序中使用
SVG
图标进行操作。这就是为什么我使用@robjez建议并首先将其内联
我已经为我需要样式化的每个图标实现了一些React
组件。下面是一个小样本:
export default class FolderIcon extends Component {
render() {
return (
<svg viewBox="0 0 475.082 475.082">
<g>
<path d="M456.239,128.475c-12.56-12.562-27.597-18.842-45.11-18.842h-191.86v-9.136c0-17.511-6.283-32.548-18.843-45.107 c-12.562-12.562-27.6-18.846-45.111-18.846H63.953c-17.515,0-32.551,6.283-45.111,18.846C6.28,67.949,0,82.986,0,100.497v274.088 c0,17.508,6.28,32.545,18.842,45.104c12.562,12.565,27.6,18.849,45.111,18.849h347.175c17.514,0,32.551-6.283,45.11-18.849 c12.566-12.56,18.843-27.597,18.843-45.104V173.59C475.082,156.078,468.805,141.042,456.239,128.475z" />
</g>
</svg>
);
}
}
这是使用以下各项的示例:
import FolderIcon from '../FolderIcon.jsx';
import styles from './Folder.css';
export default class Folder extends Component {
render() {
return <FolderIcon className={styles.icon} />;
}
}
从“../FolderIcon.jsx”导入FolderIcon;
从“./Folder.css”导入样式;
导出默认类文件夹扩展组件{
render(){
返回;
}
}
它部署在任何地方吗?不能将样式应用于用作背景图像的SVG
元素。在我所描述的SASS
的帮助下,需要一些复杂的字符串操作。要更好地控制您的SVG
(使用CSS
),请先内联它。。。
.icon svg {
fill: #FFFFFF;
}
import FolderIcon from '../FolderIcon.jsx';
import styles from './Folder.css';
export default class Folder extends Component {
render() {
return <FolderIcon className={styles.icon} />;
}
}