【发布时间】:2019-11-03 16:13:26
【问题描述】:
我有一个 SVG 用作<img> 标签。使用样式化组件我试图达到在悬停时更改笔触颜色的地步。
我导入了 SVG:
import BurgerOpenSvg from '../../images/burger_open.svg';
我为它创建了一个样式化组件:
const BurgerImageStyle = styled.img`
&:hover {
.st0 {
stroke: red;
}
}
`;
我使用它:
<BurgerImageStyle alt="my-burger" src={BurgerOpenSvg}/>
结果是,我的 SVG 显示正确,但在悬停时没有颜色变化。
我使用的 SVG 的来源:
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 38 28.4" style="enable-background:new 0 0 38 28.4;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;stroke:#221f1f;stroke-width:2;stroke-miterlimit:10;}
</style>
<g>
<g id="XMLID_7_">
<line class="st0" x1="0" y1="1" x2="38" y2="1"/>
</g>
<g id="XMLID_6_">
<line class="st0" x1="0" y1="14.2" x2="38" y2="14.2"/>
</g>
<g id="XMLID_5_">
<line class="st0" x1="0" y1="27.4" x2="38" y2="27.4"/>
</g>
</g>
</svg>
SVG 渲染如下:
是否可以更新加载到<img> 标签中的 SVG 上的类?还是必须是内联的<svg> 标签?
【问题讨论】:
-
你在浏览器中看到悬停样式了吗?
-
.NYIBr:hover .st0{stroke:red;}。 -- 但没有效果。 -
那么问题不在于 React。它与您的 CSS 一起使用。元素上有那个类吗?
-
是的。
st0是用于在 SVG 中渲染 3 行的类。 -
我的意思是
.NYIBr。那是手术班。
标签: reactjs svg styled-components