I have a vertical menu using lists (li) and I’ve got it changing background color on hover.
#limenu:hover {background-color:#000}
However, I don’t want the background to fill 100% width. Is there a way of setting the background width or creating a padding on both sides?
There will be a background-size property that does exactly what you want in CSS3. But, it will be a few years until this is so widely implemented that you can develop for it safely.
Until then, bytenik’s suggestion (or resizing the background image server-side) is the best that can be done.