Вот как это сделать
Теория
Блочные элементы (например, DIV), хотя отображаются в порядке их создания, будут располагаться рядом с предыдущим элементом или, если не хватает места, на следующей строке. Поскольку мы не хотим придавать кнопке ширину (мы хотим, чтобы размер кнопки автоматически изменялся в зависимости от содержимого кнопки), элементы блока продолжали появляться на следующей строке (см. Изображение IE8 в вопросе выше). Использование white-space:nowrap
заставляет встроенные элементы (такие как SPAN и EM) отображаться в одной строке, но игнорируется блочными элементами, поэтому решение приведено ниже.
CSS
button{
margin: 0px;
padding: 0px;
font-family:Lucida Sans MS, Tahoma;
font-size: 12px;
color: #000;
white-space:nowrap;
width:auto;
overflow:visible;
height:28px;
}
button em{
vertical-align:middle;
margin:0 2px;
display:inline-block;
width:16px;
height:16px;
background-image: url(images/ui-icons_3d3d3d_256x240.png);
}
button em.leftImage{
background-position: -96px -112px;
}
button em.rightImage{
background-position: -64px -16px;
}
HTML
<button><em class="leftImage"></em>Button<em class='rightImage'></em></button>
Результат
Internet Explorer 6, 7, 8 и Firefox 1.5, 2, 3
альтернативный текст http://i40.tinypic.com/14d0l86.jpg