posted on:January 5, 2011
Pure CSS3 Post Tags
This is a rather simple pure CSS trick you can use to style your blog post tags, usually placed at the bottom of the posts.
Pure CSS post tags uses at least 2 CSS tricks such as CSS triangles and CSS circles.
For CSS triangles you need to manipulate borders of an element that has zero height and width.
CSS circle is simpler. All you need is a square element with rounded corners set to at least half the size of the element. The border radius will then merge into a circle.
HTML
I usually markup tags with unordered list. So the markup is fairly simple:
<ul class="tags"> <li><a href="#">tag</a></li> <li><a href="#">tag name</a></li> </ul>
I will add :before and :after pseudo elements and style them to achieve the styling I wanted
CSS
I am placing the tags list at the bottom of the post element with adjusting ULs absolute position
.tags{ margin:0; padding:0; position:absolute; right:24px; bottom:-12px; list-style:none; }
Height (and line-height) of the list item LI and anchor A is set.
.tags li, .tags a{ float:left; height:24px; line-height:24px; position:relative; font-size:11px; }
Next to style is the anchor element. We’re adding margins and paddings and some rounded corners on the right hand side.
.tags a{ margin-left:20px; padding:0 10px 0 12px; background:#0089e0; color:#fff; text-decoration:none; -moz-border-radius-bottomright:4px; -webkit-border-bottom-right-radius:4px; border-bottom-right-radius:4px; -moz-border-radius-topright:4px; -webkit-border-top-right-radius:4px; border-top-right-radius:4px; }
To achieve the pointed edge we are adding a :before pseudo-element. The element has the width and height set to zero, that way we are only using it’s borders. To "draw" an arrow pointing left we are showing only the right border.
.tags a:before{ content:""; float:left; position:absolute; top:0; left:-12px; width:0; height:0; border-color:transparent #0089e0 transparent transparent; border-style:solid; border-width:12px 12px 12px 0; }
The last element to add is the :after pseudo-element. This will act as that rounded hole. What we’re doing here is creating an empty square, and we’re rounding it’s edges so we create a circle (and of course we position it with position: absolute).
.tags a:after{ content:""; position:absolute; top:10px; left:0; float:left; width:4px; height:4px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; background:#fff; -moz-box-shadow:-1px -1px 2px #004977; -webkit-box-shadow:-1px -1px 2px #004977; box-shadow:-1px -1px 2px #004977; }
We’re also adding a :hover state for the anchor:
.tags a:hover{background:#555;} .tags a:hover:before{border-color:transparent #555 transparent transparent;}
That is it! Enjoy! 🙂
Enjoyed the article?
Then don't miss our next one! Subscribe to our RSS feed or share it with your friends.
Share on FacebookTweet thisDeliciousStumbleUpon RedditSubscribe
Comments (17 Comments)
Sorry, the comment form is closed at this time.
Baylor Rae
January 5, 2011
Balaji
January 5, 2011
Defite
January 5, 2011
cssglobe
January 5, 2011
Carl
January 6, 2011
Jeff
January 6, 2011
Deva
January 7, 2011
Kresimir Katusic
January 8, 2011
Marco
January 9, 2011
Nicolas Gallagher
January 9, 2011
cssglobe
January 10, 2011
cssglobe
January 10, 2011
Baconet
January 12, 2011
Theo
January 12, 2011
Senior Web Design
January 19, 2011
acsc
January 19, 2011
cssami
January 20, 2011