Icons as Fonts or Icons as Images? Can we use both?

Yurii K
3 min readJun 21, 2024

--

Icons play a crucial role in any UI application. Icons provide information quickly and enhance navigation. It’s hard to imagine a modern front-end application without icons. One of the most popular and widely used icon libraries is Font Awesome. This free library offers an extensive variety of icons, making it likely that you’ll find everything you need for most projects. Because it is a font we can apply CSS styles to change the color, the size, etc.

Let’s install the Font Awesome library in our project

Step 1: Installation

We can install the library by using the next npm command:

npm install @fortawesome/fontawesome-free

Step 2: Add CSS Styles

Include the Font Awesome CSS file in your project:

Step 3: Use the Icons

Simply add a class from the Font Awesome library to an <i> tag:

<i class=”fas fa-camera”></i>

And there you go! You have an icon that is easy to customize and use.

Images

While Font Awesome covers most use cases, there are instances where clients require unique icons that aren’t available in the library. When this happens, you may need to use custom images as icons. However, using images as icons presents some challenges. Unlike font icons, you cannot easily change the color or size of an image icon using CSS.

Now you probably think I can not use images and font icons together and have the same flexibility.

Creating a Custom Icon Component
To provide the flexibility needed to work with font icons, and images in the same way, we can create a custom icon component.

Step 1: Define Styles for Font Icons and Images
First, let’s create the necessary styles for both font icons and images. CSS a filter style can change the color of an image. This trick and this website generate a style that will set desirable colors to our image.

Step 2: Create Enums for Size and Color

Next, let’s create a couple of enums that we will use outside of our component to set the size and color of the icons:

Step 3: Create the Custom Icon Component

The final step is to create a component that will determine whether we are using images or fonts and apply the appropriate styles. Here’s an example:

As you can see it has a lot of if statements that give us the correct CSS class.

Result

Conclusion

Icons are essential for enhancing the user experience in any UI application. Font Awesome provides a robust solution for most icon needs, offering ease of use and customization. However, when custom icons are needed, creating a custom component can help maintain consistency and flexibility in styling. By following the steps outlined above, you can effectively manage both font and image icons in your projects.

If you need to take a close look at the project here is the link.

--

--

Yurii K

Full-stack developer. In my work, I use Angular and C#. In my free time I write articles for my blog.