If you dont specify height, or you specify height by percetage but not giving its parenet a specify height, block element will resize to content height (0px for #two in this case).
So just set height to min-height, because DOM height will start from min-height without specifying height.
#one{
background: red;
min-height: 100px;
height: 100px;
max-height: 50%;
padding: 10px;
}