Render icons on the server if you are generating or serving your pages with JavaScript and save the browser from downloading additional files or performing extra rendering.
Advertisement
Remove ads with a Pro plan!
Using this requires Font Awesome Pro
Pro
A subscription to a Pro-level plan will remove all third-party advertisments on fontawesome.com.
And of course Pro-level plans come with…
All 16,083 Icons in Font Awesome
Solid, Regular, Light, Thin, and Duotone Styles for Each Icon + Brands
A Perpetual License to Use Pro
Services and Tools to Make Easy Work of Using Icons
For this example we're going to use a static site generator called Metalsmith(opens new window). Clone the project and use the static-site example. Also, remember to install dependencies right after that.
npminstall\npm i --save @fortawesome/fontawesome-svg-core \npm i --save @fortawesome/free-solid-svg-icons
Create a helper
Create a file in the static-site directory called helpers.js.
var Handlebars =require('handlebars');var library =require('@fortawesome/fontawesome-svg-core').library;var dom =require('@fortawesome/fontawesome-svg-core').dom;var icon =require('@fortawesome/fontawesome-svg-core').icon;var fas =require('@fortawesome/free-solid-svg-icons').fas;// Adds all the icons from the Solid style into our library for easy lookup
library.add(fas)
Handlebars.registerHelper('fontawesome-css',function(){returnnewHandlebars.SafeString(
dom.css())})
Handlebars.registerHelper('fontawesome-icon',function(args){returnnewHandlebars.SafeString(icon({prefix:'fas',iconName: args.hash.icon }).html
)})
Advertisement
Remove ads with a Pro plan!
Using this requires Font Awesome Pro
Pro
A subscription to a Pro-level plan will remove all third-party advertisments on fontawesome.com.
And of course Pro-level plans come with…
All 16,083 Icons in Font Awesome
Solid, Regular, Light, Thin, and Duotone Styles for Each Icon + Brands
A Perpetual License to Use Pro
Services and Tools to Make Easy Work of Using Icons
The classes svg-inline--fa, fa-w-16, and fa-lg all have a critical role in controlling the size of the icon and the placement in the DOM. If the CSS is missing when this icon displays in the browser it will flash from a very large icon down to a properly sized one a moment later. Here's how to solve it...
As we saw in the example we can inline the CSS directly into the page.
<style>{{fontawesome-css}}</style>
This Handlebars helper is calling dom.css() which returns a String representing all the styles required for displaying icons at the correct size. You can link to the external CSS, which is specific to using SVG with JavaScript. It can be found in the svg-with-js/css/fa-svg-with-js.css folder.