gpt4 book ai didi

javascript - IcoMoon SVG 不显示

转载 作者:行者123 更新时间:2023-12-03 05:40:01 24 4
gpt4 key购买 nike

我用 IcoMoon 创建了一些图标,但我稍微改变了实现。我将它们与 React 一起使用,因此我没有在 <body> 中添加 SVG 定义。 HTML 标签,然后使用 xLink将其包含到我的页面中。

我像这样分割图标(作为示例):

function playIcon() {
return (
<symbol id="icon-stop" viewBox="0 0 25 32">
<path className="path1" d="M24.704 16.544l-23.712 13.184q-0.416 0.224-0.704 0.064t-0.288-0.64v-26.304q0-0.448 0.288-0.64t0.704 0.064l23.712 13.184q0.416 0.224 0.416 0.544t-0.416 0.544z"></path>
</symbol>
);
}

function stopIcon() {
return (
<symbol id="icon-stop" viewBox="0 0 27 32">
<path className="path1" d="M27.424 3.424v25.152q0 0.448-0.32 0.8t-0.832 0.352h-25.12q-0.48 0-0.8-0.352t-0.352-0.8v-25.152q0-0.448 0.352-0.8t0.8-0.352h25.12q0.48 0 0.832 0.352t0.32 0.8z"></path>
</symbol>
);
}

function renderIcon(icon) {
switch (icon) {
case 'play':
return playIcon();
case 'stop':
return stopIcon();
}
}

const Icon = ({ icon }) => (
<svg className={`icon icon-${icon}`} style={{position: 'absolute'}, {width: 0}, {height: 0}, {overflow: 'hidden'}} version="1.1" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink">
<defs>
{renderIcon(icon)}
</defs>
</svg>
);

export default Icon;

相应的 SCSS(稍微清理了一下 IcoMoon CSS)是:

.icon {
display: inline-block;
fill: #000;
height: 1em;
stroke: #000;
stroke-width: 0;
width: 1em;
}

.icon-play {
width: .78515625em;
}

.icon-stop {
width: .857421875em;
}

当我使用 Chrome 开发工具时,我可以看到 SVG 并且代码看起来不错,但它不会渲染任何内容。只是一个空白的小块。

我创建了一个JSFiddle与渲染的 SVG 一起使用。这里它也呈现为空白。

最佳答案

viewBox 属性似乎有问题。当我删除 defssymbol 并更新 viewBox 标签时,它似乎可以工作。这是updated jsFiddle 。清理那些 svgs 就可以了。

<svg class="icon icon-play" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="overflow: hidden;" width="24" height="30" viewBox="0 0 24 30">
<g id="icon-play">
<path d="M24.704 16.544l-23.712 13.184q-0.416 0.224-0.704 0.064t-0.288-0.64v-26.304q0-0.448 0.288-0.64t0.704 0.064l23.712 13.184q0.416 0.224 0.416 0.544t-0.416 0.544z"></path>
</g>
</svg>

关于javascript - IcoMoon SVG 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40576371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com