>通常由于渲染不一致,可访问性问题和语义限制而使用图标字体通常不建议使用。 本文概述了用于创建和实现可访问的SVG图标的简化工作流程,利用SVG Sprites的功能。
虽然SVG看起来很复杂,但这种方法简化了过程。我们将利用随时可用的图标,并自动化Sprite生成来进行高效的管理。 键优点:避免了图标字体的陷阱。
<title></title>
<desc></desc>
源图标:
spritesh
npm install spritesh -g
spritesh --input assets/images/icons --output _includes/sprite.svg --viewbox "0 0 16 16" --prefix icon-
>{% include sprite.svg %}
> <use></use>
图标组件应包括viewBox
和<title></title>
<desc></desc>
>
示例图标组件(react):
<code class="language-html">{% capture id %}{% increment uniqueid %}{% endcapture %} <svg viewbox="0 0 16 16" role="img" class="icon icon-{{ include.icon }}" aria-labelledby="{% if include.title %}title-{{ id }}{% endif %}{% if include.desc %} desc-{{ id }}{% endif %}"> {% if include.title %} <title id="title-{{ id }}">{{ include.title }}</title> {% endif %} {% if include.desc %} <desc id="desc-{{ id }}">{{ include.desc }}</desc> {% endif %} <use xlink:href="#icon-{{ include.icon }}"></use> </svg></code>优化:
集成像svgo()这样的工具,以优化SVG文件,以提高性能,以提高性能。 使用NPM脚本来自动化此过程。>
>此工作流提供了一个可靠,可维护且可访问的解决方案,用于管理项目中的SVG图标。请记住,请始终在不同的浏览器和屏幕读取器上测试您的图标,以确保最佳可访问性。<code class="language-javascript">import { uniqueId } from 'lodash'; const Icon = (props) => { const id = uniqueId(); return ( <svg role="img" viewbox="0 0 16 16" classname="{`icon" icon- aria-labelledby="{" : desc-> {props.title && <title id="{`title-${id}`}">{props.title}</title>} {props.desc && <desc id="{`desc-${id}`}">{props.desc}</desc>} <use xlinkhref="{`#icon-${props.icon}`}"></use> </svg> ); }; export default Icon;</code>>
以上是可访问图标的工作SVG工作流程的详细内容。更多信息请关注PHP中文网其他相关文章!