Links are a basic part of the Internet. They’re what keep it connected, really, so why not make these connections fun? A link hover is what happens when you hover your mouse over a link (obviously). Usually you’ll see an underline, or an underline removed, or a different colour. But there are many ways to show people that they can click, so I thought I’d show you four of my favourites.
-
Transition
CSS3 has introduced an awesome new property called “transition”. Don’t be scared when I say CSS3, as this degrades perfectly fine and non-supporting browsers will just show a regular hover (I’m looking at you Internet Explorer). You can use this transition property to make your link change colour slowly. It’s a very subtle but nice-looking effect.
You apply the transition like so:
a:hover { color:#000; -webkit-transition:color 500ms ease-in; -moz-transition:color 500ms ease-in; -o-transition:color 500ms ease-in; transition:color 500ms ease-in; } -
Shadow
Another CSS3 trick. Make sure to specify this along with a colour, as otherwise it won’t degrade nicely at all and your older browser users will get confused.
a:hover {text-shadow: 1px 1px 1px rgba(0,0,0,.4);} -
Move
This is a simple one, but one that I like and use a lot. You can add some cool interactivity if you slightly alter a link’s position on hover.
a:hover {position: relative; top: 2px;} -
Opacity
This is a trick for images, and one that I use all the time. It’s nice to give images a hover state, as not all images are clickable, so you should be letting your readers know which ones are.
a.img {opacity: .5;}You can see an example of this on the social media links at the top of this page. These links also move.
Well there they are. There’s nothing super mind-blowing here, but it’s the little details that count and will make your website a little more special. Are there any techniques that you like to use? Share them in the comments.
image by aidan morgan
Stay Updated

You'll notice this site talks about the Thesis theme for Wordpress. Don't know what the heck that is? Find out.



{ 15 comments… read them below or add one }
What does -o-transition means? Others browsers?
Opera.
Great! Is transition:color for IE9?
Some good tips there. I’d only make a link move when you click it (a:active), so it looks like it’s actually been pressed on the page – a satisfying UI element.
That’s a sweet idea.
Great tips on css3. Looking up to using these soon. Thanks
transition doesn’t work on my firefox 3.6.8 or maybe i can’t see what really it do, in my case just is a normal change color,
excellent tips
Yep. Transition only works on Webkit-based browsers right now such as Safari (and Chrome). Hopefully soon -moz will kick in. Luckily it falls back to a regular hover.
I like to combine both text shadow and transition. Has a really neat effect.
It’s a shame that opacity alone doesn’t work in IE, even ie8 doesn’t support it without hacking it. A few things to think about is when you use a background image which is positioned, and then the hover is respositioned it will generally transition between the two which isn’t always a good thing. So it slides up for example when you have created Tabs. Therefore giving it the wrong feel totally.
Jonathan
Hello, how can I manage to change the opacity of a div (instead of an image as shown in your demo) when I hover it? I tried and succeeded with an image but cannot find any answer when hovering a div (with a background image repeat-x). Thank you very much!
I really like these ideas. Thanks for the code!
I’m sure gonna be using the opacity trick. I love it!
Can anyone help? This is the css code I have for my links so that when I hover over them the text displays as white.
.custom a:hover { background: #D31D8C; color: #FFFFFF; !important; }
This works on my Home page, but on my Links & Resources page, no text is seen when I hover. What must I do?
Thanks, Vivian.
i cant do the opacity css in my link… can u tell me why??? i am pasting my html
and in the css i have written
a {
position:fixed;
top:200px;
left:375px;
}
a:hover {position: relative; top: 2px;}
img {
position:fixed;
top:200px;
left:375px;
}