I think it's a good rule of thumb to use both color and background, but it shouldn't be taken as gospel. E.g., if text spills out of its container, the container's background becomes moot.
In simple cases it should be enough to know which parent element color that affects which ancestor, if necessary by adding comments in the style sheet:
CODE
p {
color: #000;
background: #fff url(image.jpg);
}
p strong {
color: #f00;
background: transparent; /* image.jpg from P */
}
What one needs to watch out for is situations like these:
* The background is an image with no background-color, but the browser doesn't show images.
* Color and background are specified with different kinds of selectors, but the browser only understand one of them. Ditto for different ways to link, embed or import style sheets.
-----------------
BTW, what is going on here? According to
http://www.w3.org/TR/CSS21/colors.html#propdef-background "background" is not inherited, but Opera and Firefox still add a
new copy of the background-image behind STRONG:
CODE
p {
color: #000;
background: #0f0 url(dog.jpg);
}
p strong {
color: #f00;
background: inherit;
}