3.1.0 • Published 9 years ago
svg-icon-inline-loader v3.1.0
Icon SVG Inline Loader
A webpack loader that enables inlining Material Design SVGs, Ionicon SVGs, Iconic SVGs, or any SVG file into HTML.
Install
npm install --save-dev svg-icon-inline-loader
Usage
Webpack Configuration
{
test: /\.html$/,
loader: 'svg-icon-inline'
},Or with html-loader:
{
test: /\.html$/,
loader: 'html!svg-icon-inline'
},Within HTML
This loader recognizes 3 types of self-closing tags:
<mat-svg/>- Inline a Material Design SVG<ion-svg/>- Inline an Ionicon SVG<iconic-svg/>- Inline an Iconic SVG<file-svg/>- Inline an SVG file.
Inline a Material Design SVG
<mat-svg category="navigation" name="fullscreen_exit"/>category: The category that Material Design specifies for that icon.name: The name of the icon. If the name is multi-word, it must be separated using underscores.
Inline an Ionicon SVG
<ion-svg name="ion-arrow-expand"/>name: The name of the icon. If the name is multi-word, it must be separated using hyphens.
Inline an Iconic SVG
<iconic-svg name="account-login"/>name: The name of the icon. If the name is multi-word, it must be separated using hyphens.
Inline an SVG File
<file-svg src="./icons/home.svg"/>src: The path of the svg file.
Features
Retained Attributes
Any attributes apart from category, name, or src, are retained. For example:
Input
<mat-svg v-if="displayHomeIcon" class="icon-home" category="action" name="home"/>Output
<svg role="presentation" focusable="false" v-if="displayHomeIcon" class="icon-home" fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
<path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"></path>
<path d="M0 0h24v24H0z" fill="none"></path>
</svg>Accessibility Improvements
A11y modifications for SVGs as recommended.
- Add
role="presentation"andfocusable="false"attributes. - Remove
descandtitleattributes.
SVG Optimization
SVGO is used to optimize SVGs.
Applying CSS to SVGs
Inlining SVGs enables CSS to be applied to SVGs.
Notes
Originally forked from markup-inline-loader. Thank you!