css3的出现,给按钮带来了新生,以前的按钮几乎都是切图啊切图,好不繁琐。现在有了css3这个利器,按钮小case了。主要要用的css3技术有背景渐变,圆角,文字阴影,盒子阴影,当然也可以加入动画哦。相关知识请参考gradient,text-shadow,box-shadow,border-radius

green btn

red btn

light blue btn

dark blue btn

orange btn

light grey btn

dark grey btn

black btn

input btn

下面以greenbtn为例,说下如何制作这样的按钮

html code

<div><a href="#" class="greenbtn small-btn">samll</a><a href="#" class="btn greenbtn">default</a><a href="#" class="greenbtn large-btn">largebtn</a></div>

有两个class,其中一个决定颜色,一个根据需要设置btn的大小设置font-size,line-height,padding及border-radius。以greenbtn为例,其css如下

css code

.greenbtn{
	border:1px solid #467d01;
	box-shadow:inset 0 1px 1px #fff,0 0 1px #fff inset;
	color:#fff;
	text-shadow:0 -1px 0 rgba(0,0,0,0.5);
	/* IE9 SVG, needs conditional override of 'filter' to 'none' */
	background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzkxZDEyNSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM0ZThiMDIiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
	background: -moz-linear-gradient(top,  #91d125 0%, #4e8b02 100%); /* FF3.6+ */
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#91d125), color-stop(100%,#4e8b02)); /* Chrome,Safari4+ */
	background: -webkit-linear-gradient(top,  #91d125 0%,#4e8b02 100%); /* Chrome10+,Safari5.1+ */
	background: -o-linear-gradient(top,  #91d125 0%,#4e8b02 100%); /* Opera 11.10+ */
	background: -ms-linear-gradient(top,  #91d125 0%,#4e8b02 100%); /* IE10+ */
	background: linear-gradient(top,  #91d125 0%,#4e8b02 100%); /* W3C */
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#91d125', endColorstr='#4e8b02',GradientType=0 ); /* IE6-8 */
}
.greenbtn:hover{
    color:#fff;
	filter:none;
	background:#70AF14;
}
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
:root .greenbtn{
    filter: none;
}

注:这个补充一个知识点,ie9因为即支持ie的filter滤镜又支持css3的渐变背景,所以如果想要ie9使用css3的渐变背景而不是filter滤镜,那就要对ie9单独设置filter为none,拿第一个greenbtn为例,我们设置了:root .greenbtn的filter为none,这样就能正确解析了。如果不设置filter为none还会出现一个问题,那就是ie9的border-radius和filter产生的渐变同时使用,在圆角处会有颜色溢出,使之看起来border-radius没有产生作用,但是如果你设置了border你就会发现border-radius是正确解析的,关键就在于这个filter捣乱了,颜色溢出了

另外,对于form元素里面的按钮,如input的submit,我们使用了inputbtn这个class和颜色的class结合,当然我们对应大小的也有small-inputbtn和large-inputbtn,这是因为它有一个特殊的行高对齐方式,所以不得不独立出来(submit解决方案里面有介绍),以免和span或a等元素的btn混淆麻烦,下面我们贴出各个btn类型的css代码:

css code

/* btns */
.btn,.small-btn,.large-btn{
    cursor: pointer;
	display:inline-block;*display:inline;*zoom:1;
}
.btn{
	-moz-border-radius:5px;
	-webkit-border-radius:5px;
	border-radius:5px;
	padding:0 16px;
	line-height:30px;
	font-size:14px;
}
.small-btn{
	line-height:20px;
	padding:0 5px;
	font-size:12px;
	-moz-border-radius:3px;
	-webkit-border-radius:3px;
	border-radius:3px;
}
.large-btn{
	line-height:40px;
	font-size:18px;
	padding:0 40px;
	-moz-border-radius:8px;
	-webkit-border-radius:8px;
	border-radius:8px;
}
.inputbtn,.small-inputbtn,.large-inputbtn{
    display:inline-block;*display:inline;*zoom:1;
	cursor: pointer;
	text-align:center;
	overflow:visible;
	*zoom:1;
}
.inputbtn{
    -moz-border-radius:5px;
	-webkit-border-radius:5px;
	border-radius:5px;
	padding:0 16px;
	height:30px;
	font-size:14px;
}
.small-inputbtn{
	padding:0 5px;
	height:22px;
	font-size:12px;
	-moz-border-radius:3px;
	-webkit-border-radius:3px;
	border-radius:3px;
}
.large-inputbtn{
    padding:0 40px;
	height:40px;
	font-size:18px;
	-moz-border-radius:8px;
	-webkit-border-radius:8px;
	border-radius:8px;
}
@-moz-document url-prefix(){
	.inputbtn,.small-inputbtn,.large-inputbtn{
		padding-bottom:3px;
	}
}

更多资料

小小赞助大大帮助

如果您觉得本文的内容对您的学习有所帮助:

支付鼓励

轻轻一点,是您对我的支持