В базовом случае просто используйте display: inline-block
для диапазона.
Вот мой тестовый пример (работает в FF, Chrome и IE 6-8):
<!DOCTYPE HTML>
<html>
<head>
<title>Span padding test</title>
</head>
<body>
<div style="background-color: yellow; border: 1px solid red;">
<span style="padding: 50px; display: inline-block;">test</span>
</div>
</body>
</html>
Причина, по которой добавление float: left
к div и span исправляет это, заключается в том, что плавающий встроенный элемент неявно преобразует его в блочный элемент. Если вы не знакомы с нюансами между элементами div и span (то есть различием между блочными и встроенными элементами), чтение http://www.maxdesign.com.au/articles/inline/ должно помочь.
Есть несколько других способов решить эту проблему, но трудно сказать, какой из них лучше, не зная больше об остальной разметке и стилях.