HTML5 Development Center

Developed for you in part by
 
537-link-glow

How to Create Glowing Links in CSS3

By | | JavaScript

7

In my previous CSS3 article, we created blurred text using a shadow and a transparent text color. Today, we’ll use a similar technique to create animated glowing links.

Text-shadow is a versatile CSS3 property which is supported in all browsers without vendor prefixes. Except one. Sorry IE9 users — you’ll need to wait a few more months for IE10. It’s not just useful for shadows, though. On a darker background, a white “shadow” appears to make the text glow:

CSS3 Glowing Text

This can be applied when the user hovers/focuses over a link. With a little CSS3 transition magic, we can create an animated glowing effect. Let’s write some code. Starting with our HTML, we’ll apply a “glow” class to a link:


<a href="#" class="glow">Glowing Link</a>

Our first CSS3 declaration defines the initial state and the vendor-prefixed transition properties. The transition starts immediately and lasts for half a second. I found “linear” timing produced the most natural effect, but you can experiment with others (ease, ease-in, ease-out, ease-in-out, cubic-bezier):


a.glow, a.glow:hover, a.glow:focus
{
	text-decoration: none;
	color: #aaf;
	text-shadow: none;
	-webkit-transition: 500ms linear 0s;
	-moz-transition: 500ms linear 0s;
	-o-transition: 500ms linear 0s;
	transition: 500ms linear 0s;
	outline: 0 none;
}

We can now define the glowing text properties. I found that a single text-shadow such as 0 0 8px #fff was a little too subtle. Two shadows produced a better result — one white and one bright yellow at slightly different offsets:


a.glow:hover, a.glow:focus
{
	color: #fff;
	text-shadow: -1px 1px 8px #ffc, 1px -1px 8px #fff;
}

View the glowing links demonstration page. The source contains all the code and I recommend you experiment with different animation and text-shadow properties.

warning: More blurry behavior in Opera

This animated effect works well in Firefox, Chrome and Safari. IE9 doesn’t support text-shadow so the effect can’t be seen. Opera supports CSS3 transitions but it only affects certain properties. Color works well, but it’s not applied to text shadows — which results in more abrupt animation. This should be fixed in a future version.

The second set of links on the demonstration page shows a back-lit effect created by changing the text color to the same as the background. However, this makes the text invisible on IE9 and below. To solve the problem, we can either use Modernizr or write our own text-shadow detection code, e.g.


if (document.createElement("detect").style.textShadow === "") {
	document.getElementsByTagName("html")[0].className += " textshadow";
}

Have fun with the technique. Please leave your comments and a URL if you create a nice effect on your site.

The Ultimate JavaScript Bundle: 2 books + 1 course

Buy now $39 Normally $117 - save 66%

Or get access to all SitePoint's Premium Content with a Learnable membership

Craig Buckler

Craig is a Director of OptimalWorks, a UK consultancy dedicated to building award-winning websites implementing standards, accessibility, SEO, and best-practice techniques.

More Posts - Website

{ 7 comments }

Katie Clarke September 20, 2011 at 4:40 pm

Hi Craig,

Thanks very much for the info. I would like to try this out with my website I must admit that I have been a bit lazy in looking up info material, but this has caught my attention and revitalised my interest.

Thanks again.

Katie

Adrien Lamothe July 1, 2011 at 12:02 am

Nice technique, enhances appearance. Hyperlinks are difficult to work with, I tried detecting IE and providing an alternate styling but then decided to simply not support IE even though the pages won’t render with IE. Why cater to an inferior browser?

Adrien Lamothe July 1, 2011 at 12:00 am

Nice technique, it adds a lot to appearance. Hyperlinks are difficult to style, I tried writing some code to detect IE and provide alternate CSS styling, then decided to simply not support IE even though the pages won’t render at all on IE. Why cater to an inferior browser?

Tatsh June 21, 2011 at 1:39 am

Could use filters in IE but there would be no transition. I would disagree anyway as filters really make things worse overall because they just aren’t really part of the engine so much. You would think even today’s hardware and with DX rendering on hardware in part filters would be a good idea, but they cause all sorts of layout issues in my experience.

IE users can continually get the lesser experience and that’s fine with me, mainly because Microsoft fails to support their own ecosystem with a good browser.

Avk June 16, 2011 at 5:16 pm

Nice, really great how CSS3 transitions being used these days. NIce effect.

Kristen Holden June 16, 2011 at 10:00 am

Thanks Craig. Awesome article!

Hira Kumar Maharjan June 16, 2011 at 6:13 am

it is really great article . It helps in my comming pojects

Comments on this entry are closed.