As of writing this book, font-awesome has a total of 439 icons. Also all the Sass variables and setup is within _variables.scss
and _icons.scss
which may be hard to maintain. With maps, we can organize these icons further.
The 439 icons, can be divided into 10 categories:
Now that we have divided these icons into their category, we can use maps
to organize them:
$fa-web-app-icons-map: (
adjust: "\f042",
anchor: "\f13d",
archive: "\f187",
arrows: "\f047",
"arrows-h": "\f07e",
"arrows-v": "\f07d",
asterisk: "\f069",
...
);
fa-file-type-icons-map: (
file: "\f15b",
"file-archive-o": "\f1c6",
"file-audio-o": "\f1c7",
"file-code-o": "\f1c9",
"file-excel-o": "\f1c3",
"file-image-o": "\f1c5",
"file-movie-o": "\f1c8",
"file-o": "\f016",
"file-pdf-o": "\f1c1",
"file-photo-o": "\f1c5",
"file-picture-o": "\f1c5",
"file-powerpoint-o": "\f1c4",
"file-sound-o": "\f1c7",
"file-text": "\f15c",
"file-text-o": "\f0f6",
"file-video-o": "\f1c8",
"file-word-o": "\f1c2",
"file-zip-o": "\f1c6"
) !default;
We will create a map for each category. We can further organize these maps into a list
like so:
$fa-icons-list: $fa-web-app-icons-map,
$fa-file-type-icons-map,
$fa-spinner-icons-map,
$fa-form-control-icons-map,
$fa-currency-icons-map,
$fa-text-editor-icons-map,
$fa-directional-icons-map,
$fa-brand-icons-map,
$fa-video-player-icons-map,
$fa-medical-icons-map;
A list
can take any data type value and in this case we have placed individual maps
within the $fa-icons-list
. Now we can iterate through this lists as such:
@each $icon-map in $fa-icons-list {
// this will return the individual maps
}
Now that we have the individual maps, we can iterate through the key/value pairs like so:
@each $icon-map in $fa-icons-list {
@each $icon-name, $icon-value in $icon-map {
.#{$fa-css-prefix}-#{$icon-name}:before { content: #{$icon-value}; }
}
}
With this we have taken advantage of lists
, maps
, and control directives.
For the final results, go to the Font-awesome fork and explore it further.