Итак, нам нужно сделать кнопку для формы, фон у которой должен растягиваться по ширине текста, углы должны быть закруглены. Приступим.
Сначала приготовим картинки для фона. Оптимальным вариантом сделаем их в виде спрайта.

Далее напишем для кнопки следующую html разметку:
<div class="button"> <div> <input type="submit" value="текст кнопки" /> <span></span> </div> </div>
Теперь с помощью CSS придадим кнопке необходимый вид:
.button {
float: left; /* требуется для того, чтобы ширина кнопки зависела от контента (по желанию применить display: inline-block) */
margin: 50px; /* устанавливаем необходимые внешние отступы, требуемые по дизайну */
}
.button div {
position: relative;
color: #fff;
height: 27px;
background: url(path-to/button.png) no-repeat; /* левые углы фона с прозрачными участками */
font-size: 11px;
}
* html .button div { /* хак для ие6 чтобы с шириной кнопки проблем не было */
width: 10px;
}
.button span { /* правое скругление кнопки выносим за пределы кнопки */
background: url(path-to/button-r.png);
height: 27px;
width: 6px;
display: block;
position: absolute;
z-index: 1;
top: 0;
right: -6px;
overflow: hidden;
}
.button input {
height: 100%;
cursor: pointer;
margin: 0 -6px 0 0; /* чтобы кликабельным была правая часть кнопки, вынесенная за ее пределы */
padding: 2px 6px 5px 6px;
overflow: visible; /* убираем не обнуляемые внутренние отступы для ie6-7 */
border: none;
position: relative;
z-index: 2;
background: none;
}
Было бы совсем неправильно не упомянуть о закруглении углов с помощью css3. Без костылей для IE, конечно же, не обойтись, но этот вариант сегодня уже имеет полное право на использование в рабочих проектах (к тому же он значительно упрощает реализацию поставленной задачи).
В данном случае html разметка не требует никаких дополнительных оберток:
<input type="submit" value="текст кнопки" />
CSS так же заметно поубавился
input {
height: 27px;
cursor: pointer;
padding: 2px 6px 5px 6px;
overflow: visible;
border: none;
background: url(img/button-repeat.png) repeat-x;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
Для IE как вариант используем плагин PIE. Тяжеловат, но со своей задачей справляется. Подключаем плагин и прописываем для input еще одну строку:
input {
behavior: url(path-to/PIE.htc);
}