Создание кнопок с использованием спрайтов

Цель данного урока – создать кнопки, у которых есть несколько состояний: спокойное, в момент подведения курсора мыши и состояние, которое принимает кнопка в момент нажатия.

В случае, если кнопка простая, представляющая собой текст на однородном фоне, то ее можно создать на базе тега ссылки A, описав следующие стили:

a{
/*внешний вид ссылки в обычном состоянии*/
}
a:hover{
/*внешний вид ссылки в момент подведения курсора мыши*/
}
a:active{
/*внешний вид ссылки в момент нажатия клавиши мыши*/
}
	

Например, для создания вот такой кнопки Домой можно создать следующий стиль:

a{
	display:block;
	width:100px;
	height: 20px;
	background-color: #d0d0d0;
	border:1px solid #505050;
	text-decoration: none;
	text-align:center;
	font-weight: bold;
	color:#505050;
}
a:hover{
	background-color:#f0f0f0;
	color: #a0a0a0;
	text-decoration: underline;
}
a:active{
	color: black;
	background-color:rgb(224,190,205);
}
	

В тех случаях, когда кнопка имеет фоновое изображение, то можно для каждого состояния менять URL фоновой картинки. Например,

a{
	...
	background-image:url(normal_state.png);
}
a:hover{
	background-image:url(hover_state.png);
}
a:active{
	background-image:url(active_state.png);
}
	

Но такой подход неудобен, по нескольким причинам, таким как:

Поэтому, обычно все состояния всех кнопок хранят в одном файле, например вот таком:

В этом случае фоновое изображение устанавливается для всех кнопок одинаковым и может быть описано в единственном классе. А для каждой кнопки потребуется сдвигать фоновое изображение к нужному месту, используя селектор background-position.

Например, для кнопки снизу

был создан следующий стиль

a.menu{
	display:block;
	width:100px;
	height:70px;
	background-image:url(sprite.png);
	float:left;
}
.home{
	background-position: 0px -70px;
}
.home:hover{
	background-position:0px -210px;
}
.home:active{
	background-position:0px -280px;
}