Creating a Notification Badge with HTML5 and CSS3
I recently wanted to add a notification badge to a website. I wasn’t sure what the best approach was, but I knew I didn’t want to add extra markup and position it with CSS. I also didn’t want to use a jQuery plugin to add this little feature.
I ultimately decided to use the HTML5 data- attribute with the CSS attr() function. It works in most browsers including IE 8+ which was good enough for me because it wasn’t a required feature on the site.
The HTML
<ol>
<li>
<a data-notifications="10" class="button" href="#">New Comments on Your Posts</a>
</li>
<li>
<a class="button" href="#">Number of Post Likes :)</a>
</li>
<ol>
All the magic is in the data-notifications
attribute. It’s really easy to add
to any element and can be easily grabbed with CSS.
The CSS
/* make sure the element has position: relative */
[data-notifications] {
position: relative;
}
/* append the notification badge after it */
[data-notifications]:after {
/* the burger */
content: attr(data-notifications);
/* the fries */
position: absolute;
background: red;
border-radius: 50%;
display: inline-block;
padding: 0.3em;
color: #f2f2f2;
right: -15px;
top: -15px;
}
This is a great example of why I love the simplicity of CSS. The seemingly
complex idea of appending the data-notifications
value is actually really
simple. Most of the CSS is just making it look good.
The Demo
Check out this Pen!