html - 如何在 HTML 中使用 SVG 图标?

标签 html css svg

我有一个包含 3 个图标的 svg 文件。

当我通过 <img> 导入它时标签,我得到 3 个图标,一个在另一个下方。 我想连续使用图标,一个挨着另一个。 我怎样才能单独使用它们?

.svg 文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16.3px"
     height="26.9px" viewBox="0 0 16.3 26.9" enable-background="new 0 0 16.3 26.9" xml:space="preserve">
<g id="bg">
</g>
<g id="ui">
    <g>
        <polygon points="8.1,0 10.3,4.3 15.2,5 11.7,8.3 12.5,13 8.1,10.8 3.8,13 4.6,8.3 1.1,5 6,4.3         "/>
        <polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="8.1,13 10.3,17.3 15.2,18 11.7,21.3 12.5,26 8.1,23.8 
            3.8,26 4.6,21.3 1.1,18 6,17.3       "/>
    </g>
</g>
<g id="pop_ups">
</g>
</svg>

谢谢!

最佳答案

将 SVG 文件用作 Sprite 。

创建一个图标大小的元素, overflow hidden :

.icon {
    display: inline-block;
    width: 16.3px;
    height: 13.45px;
    overflow: hidden;
}

将 SVG 放置在元素内,以便图标显示:

.icon > img {
    position: relative;
}
.darkStar > img {
    top: 0;
}
.lightStar > img {
    top: -13.45px;
}

演示(使用内联 SVG 而不是链接 <img> ,这违背了目的,但在这里更容易演示):

.icon {
    display: inline-block;
    width: 16.3px;
    height: 13.45px;
    overflow: hidden;
}
.icon > svg {
    position: relative;
}
.darkStar > svg {
    top: 0;
}
.lightStar > svg {
    top: -13.45px;
}
<span class="icon lightStar">
    <svg width="16.3px" height="26.9px">
        <polygon points="8.1,0 10.3,4.3 15.2,5 11.7,8.3 12.5,13 8.1,10.8 3.8,13 4.6,8.3 1.1,5 6,4.3" />
        <polygon points="8.1,13 10.3,17.3 15.2,18 11.7,21.3 12.5,26 8.1,23.8 3.8,26 4.6,21.3 1.1,18 6,17.3" fill="none" stroke="#000000" stroke-miterlimit="10" />
    </svg>
</span>
<span class="icon darkStar">
    <svg width="16.3px" height="26.9px">
        <polygon points="8.1,0 10.3,4.3 15.2,5 11.7,8.3 12.5,13 8.1,10.8 3.8,13 4.6,8.3 1.1,5 6,4.3" />
        <polygon points="8.1,13 10.3,17.3 15.2,18 11.7,21.3 12.5,26 8.1,23.8 3.8,26 4.6,21.3 1.1,18 6,17.3" fill="none" stroke="#000000" stroke-miterlimit="10" />
    </svg>
</span>

关于html - 如何在 HTML 中使用 SVG 图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32237481/

相关文章:

html - 当显示尺寸改变时以不同方式对齐 Flexbox

html - 边框不延伸 - css

javascript - 当部分到达页面顶部时动态添加类

javascript - 为什么输入类型 ='file' 不调度事件?

css - 使用 :host selector vs container div

jquery - 如何使用 html、css 和 jquery 创建模态框?

javascript - 尝试在 JavaScript 中将 Color Hex 作为参数传递

angularjs - SVG ng-repeat'ed 元素上的 SMIL 动画仅在页面加载时发生

css - 如何在 SVG 字体的 URL 中定义字体系列名称?

javascript - 堆叠元素阻止事件传播