>通常由於渲染不一致,可訪問性問題和語義限製而使用圖標字體通常不建議使用。 本文概述了用於創建和實現可訪問的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中文網其他相關文章!