Цвет фона обычно обрабатывается как transparent
, а не inherit
, по умолчанию. При inherit
фоновое изображение будет скопировано в каждый элемент и смещено с помощью полей / отступов / и т. Д. (Имеет более очевидный эффект с фоновыми изображениями).
Обычно это не имеет значения, поскольку родитель обычно становится достаточно большим, чтобы вместить всех детей (поэтому они будут отображаться на заднем плане родителя). Но, поскольку вы используете float
на всех дочерних элементах, фактический размер #content
на самом деле не является размером дочерних элементов вместе взятых.
Плавающее содержимое может существовать за пределами родительского элемента.
Без какого-либо собственного статического содержимого #content
имеет высоту 0 , в то время как content_left/right/middle
фактически существует под ним (поскольку они имеют ...
для содержимого, их высота по умолчанию равна line-height
).
Чтобы лучше понять, что происходит, попробуйте добавить высоту к #content
и цвет фона для детей (или используйте «Проверка элемента» и выделение тегов в Chrome или Firebug):
#content { background-color: #FFF; height: 5px; }
#content_right(middle/left) { float: left; width: 500px; background: #ccc; }
Но, да, вам нужно указывать цвет фона в плавающих элементах div, а не их родительских элементах.