Using Font Awesome Icons without <i> Tags
If you've not used glyph icon libraries like Font Awesome before, you're really missing out. They're incredibly useful, flexible, and are easy to implement via markup. The normal method for using font awesome is by using an <i> element with an icon-specific CSS class:
<i class="icon-github"></i>
This works beautifully in most cases but what if you don't want to inject an <i> tag or simply can't? If you run into this case, you can still use Font Awesome glyphs! All you need to do is use the :before pseudo-element of the element you want to use and set its content and font-family:
div.github:before {
content: "\f09b";
font-family: FontAwesome;
/* more styling for the icon, including color, font-size, positioning, etc. */
}
This is essentially what Font Awesome does for <i> tags so it's only natural that we do so for our custom purpose. To find the content string for the icon you'd like, just open the font-awesome.css and look up the icon you'd like to use!
MooTools has always gotten a bit of grief for not inherently using and standardizing namespaced-based JavaScript classes like the Dojo Toolkit does. Many developers create their classes as globals which is generally frowned up. I mostly disagree with that stance, but each to their own. In any event...
In 2001 I had just graduated from a small town high school and headed off to a small town college. I found myself in the quaint computer lab where the substandard computers featured two browsers: Internet Explorer and Mozilla. It was this lab where I fell...
Adding to my mental portfolio is important to me. First came MooTools, then jQuery, and now Dojo. I speak often with Peter Higgins of Dojo fame and decided it was time to step into his world. I chose a simple but useful plugin...
One of my favorite Firefox plugins is called LinkAlert. LinkAlert shows the user an icon when they hover over a special link, like a link to a Microsoft Word DOC or a PDF file. I love that warning because I hate the surprise...
Awesome tip !
Thank you !
In my experience with Font Awesome, you don’t have to use .
You can add the icon class to a and it works just the same.
You can also still put contents within the div like so:
Fork me
This will display the icon with the text inline to the right.
Note: I haven’t really checked to see how IE7 handles this, but my guess is that the contents gets replaced by the icon.
Sorry…HTML was still stripped…Lets try that again…
In my experience with Font Awesome, you don’t have to use
/**/
.You can add the icon class to a
/**/
and it works just the same./**/
You can also still put contents within the div like so:
/*Fork me*/
This will display the icon with the text inline to the right.
Note: I haven’t really checked to see how IE7 handles this, but my guess is that the contents gets replaced by the icon.
Well thats just kinda embarrassing :)
Here is a gist to go with it … https://gist.github.com/ammmze/6380290
i was looking on this idea, thank you :)
And when they change the char codes, in… say… version 4?
If they ever change the char codes then you should not use them at all
You don’t need to use an tag. I’ve been doing for a very long time, even with the latest 3.2.1 code. Even look at the source, there is no specificity.
http://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css
Well it removed my markup. But you can simply use (span tag) or any other element.
input:before doesnt work.
Never mind – “:before and :after render inside a container” so form elements are not possible :/
By using an i tag though, you can at least assign an “aria-hidden” attribute to what’s really just a decorative element. Applying the icon to an element with real content will cause screen-readers to pronounce the pseudo-element’s content which you likely want to avoid. See related – https://github.com/FortAwesome/Font-Awesome/issues/389
http://fontawesome.io/whats-new/ — a major new version of FontAwesome was just released yesterday. Still awesome, but the classes have all changed. Correct syntax is now:
<i class=”fa fa-github”><i>
Like Mickey said, this is not a good practice. The chars order could change in future versions and all breaks down to refactor. I’m trying to find a solution for this but still nothing…
Found a good solution using a mixin with sass
@mixin icon-pseudo($name) {
font-family: “your-font-name”;
font-weight: normal;
font-style: normal;
display: inline-block;
text-decoration: inherit;
@extend .#{$name}:before;
}
Or simply @extend .#{$name}:before;
where this number come from “\f09b” ? How to know it?
You can get it by looking in the font-awesome.css file and seeing how each icon is set (via the `content` property).
you can actually get it now directly on the icon page!!
e.g.
http://fortawesome.github.io/Font-Awesome/icon/arrow-circle-right/
notice the unicode field at the top!
Yet again you come to the rescue.
I was forgetting to specify the font-family.
I used a little snippet I found at http://www.weloveiconfonts.com
Works for me…
how can you specify the size of the awesome font in the
:before
or:after
Just specify the font size like this
font-size:30px;
https://github.com/petermelias/font-awesome-sass-mixins
I have found a similar solution, but without the need of the unicode characters:
http://dusted.codes/making-font-awesome-awesome-using-icons-without-i-tags