String elements simply do not account for vertical margins or height. Block elements.
Edit:
In response to the comments, it seems that there are two problems.
- You have two elements with
id='generals' . Change this to class='generals' . - Add
overflow: hidden to your generals style. All elements inside it float and therefore do not relate to the height of the element. Adding overflow: hidden changes the way the element is displayed, clearing all the floats inside it.
source share