Cool CSS Rounded corner buttons and links

Ever think of creating cool and stylish rounded corners buttons with css and minimal images? Everyone needs these buttons or styles for their projects. I have found a very interesting button example called Wii buttons. The rollover effect on these buttons is very stylish and appealing. Look at the samples below.

Test Button I am a link I am a disabled button

Compatibility

These buttons are tested with IE6, IE5.5, IE7, Safari 2, Firefox 2, Opera 9.

Here is a quick overview to create your own buttons.

First, Download the image (Click here to download)

Now copy the following CSS and past it between head tags, or in your stylesheet (make sure you correct the image path.

a.button, span.button, del.button{

	display:-moz-inline-box;
	display:inline-block;
	cursor:pointer;
	border:none;
    font-size:0;
    line-height:0;

	/*
	for Safari, read this first
	http://creativebits.org/webdev/safari_background_repeat_bug_fix
	*/
	background-position:0 0;
	background-repeat:no-repeat;
	height:30px;
	text-decoration:none;
	color:#2e523b;
	font-style:normal;
	margin:0 6px 0px 0;
	padding:0 10px 0 0;
	vertical-align:middle;	

    padding-top:-2px;
	_position:relative;
	_width:10px;
	_overflow-y:hidden;
}
a.button, span.button, del.button,
a.button span, span.button button, span.button input, del.button span{
    background-image:url(btn0.png);
    _background-image:url(btn0.png);
}
a.button span, span.button button, span.button input, del.button span{
white-space:nowrap;
	cursor:pointer;
    color:#222;
	display:-moz-inline-box;
	display:inline-block;
	line-height:1;
    letter-spacing:0 !important;
    font-family:"Arial" !important;
    font-size:12px !important;
    font-style:normal;
    background-color:transparent;
	background-position:100% 0;
	background-repeat:no-repeat;
	height:30px;
	padding:8px 20px 0 10px;
	margin:0 -16px 0 10px;
	border:none;
	vertical-align:text-top;
	zoom:1;
	_position:relative;
    _padding-left:0px;
	_padding-right:12px;
	_margin-right:-10px;
	_display:block;
	_top:0;
	_right:-5px;

}
span.button button{
   line-height:2.5;/*Opera need this*/
}

html.safari a.button span,
html.safari del.button span{
  line-height:1.3;
}

html.safari span.button button{
  line-height:2.6;
}

html.safari a.button:focus,
html.safari span.button button:focus{
    outline:none;
}
del.button{
	/* cursor:not-allowed;	*/
	background-position:0 -120px;

}
del.button span{
	cursor:default;
    color:#aaa !important;
	background-position:100% -120px;
}
span.button button, span.button input{
	padding-top:0px;
	line-height:2.5;/*Opera need this*/
}
/** optional **/
/*
a.button:visited{
	color:#aaa;
}
*/
/*Hover Style*/
a.button:hover,
span.button:hover,
a.button:focus,
a.dom-button-focus,
span.button-behavior-hover{
	background-position:0 -60px;
	color:#222;
	text-decoration:none;
}
a.button:hover span,
span.button:hover button,
a.button:focus span,
span.button-behavior-hover button,
span.button-behavior-hover input{
	background-position:100% -60px;
}
a.button:active, a.button:focus span{
	color:#444;
}
del.button-behavior-hover, del.button:hover{
	background-position:0 -180px;
	/* cursor:not-allowed; */
}
del.button-behavior-hover span, del.button:hover span{
	background-position:100% -180px;
	/* cursor:not-allowed; */
}
/*Optional hack for IE6 to simulate :hover selector*/
span.button button, del.button span, span.button input{
	_behavior:expression(
		(function(el){
			if( typeof( behavior_onMouseEnter) == 'undefined'){
				behavior_onMouseEnter = function(el){
					var dEl = this.parentNode;
					var sClass = dEl.className ;
					dEl.__defaultClassName = sClass ;
					dEl.className = sClass + ' button-behavior-hover';
					this.setCapture();
				};
				behavior_onMouseLeave = function(el) {
					var dEl = this.parentNode;
					dEl.className = dEl.__defaultClassName ;
					dEl.__defaultClassName = undefined;
					this.releaseCapture();
				};
			};
			el.runtimeStyle.behavior = 'none';
			el.onmouseenter = behavior_onMouseEnter;
			el.onmouseleave = behavior_onMouseLeave;
		})(this));
}

Now define your buttons in any of following ways

// Simple anchor
<a class="button" href="#"><span>Your link Text</span></a>

//Form button
//For IE
<span class="button"><input name="foo" type="submit" value="yout text" /></span> 

// For Not IE (if browser is different)
<span class="button"><button>your text</button></span>

//Disabled Buttons
<del class="button"><span>your text</span></del>

Enjoy and have fun with your projects

Related posts

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

Does not work in FireFox Mozilla

Yes, it works on many major browsers

How so? The hover portion on the right side doesn’t work in firefox.

Ok, I see what the problem is. This will not work with or submit for that matter

input type buttom or input submit

it can work on submit buttons as well. Use the code written in last codebox its for submitt buttons.

Sorry, but the input button hover state does not work in FF. Any solution other than using the element? I am trying to avoid using that if I can. Thanks.

Hi I’m having the same problem with the code that J seems to have had…the right side of blue background for the IE Button does not appear when you hover over it. Is there a fix for this? Thanks for the great buttons!

I stumbled onto the problem myself and was mindboggled while debugging the CSS, however the sullution seems logical when you think of it. In the /*Hover Style*/ part of the css, be sure to re-add:

background-image:url(btn0.png);

Seems that this property is deleted for some reason in some hover states, might be the doctype aswell, anyway problem solved. In my case it was the left part of the button that did not show, :)

It worked perfectly for me

Is it possible to change the color of text as well if I move the mouse over the button?

Otherwise it works! Thank you very much.

yes just alter the color of a:link,a:visited,button etc in css.. as you know the link/buttons are hold up in span..

change color of a:hover that will change text color when mouse if over them

Problem with the right side of the hover not displaying? this fix worked for me in both Firefox 3 and IE8. However I have only tested it using

[code]<input name=”foo” type=”submit”[/code]

so it might need tweaking for other buttons.

[code]
a.button span:hover, span.button button:hover, span.button input:hover, del.button span:hover{
background-position:100% -60px;
background-image:url(/images/btn0.png);
_background-image:url(/images/btn0.png);

}
[/code]

Do you have any example using the above method for hyperlink?

Would personally use inputs to submit a form. Buttons don’t actually submit the form per se, you need to add some messy javascript for that.

Leave a comment

(required)

(required)