W skrócie, bez szukania w dokumentacji: ponieważ idea floatów polega na tym, że element ustawiony jako float (==pływający) jest usunięty z normalnego ustawienia układu elementów na stronie. Co to oznacza? Jeśli ustawisz, jak w przykładzie, całą zawartość elementu <div>
jako float
, to ten element myśli, że nic w nim nie ma – bo float
usuwa wszystkie <a>
z miejsca, gdzie <div>
je jakby "oczekuje".
Napisz, jeśli chciałbyś poparcie dokumentacji. To zawsze zabiera trochę czasu, więc gdy nie muszę, nie szukam.
UPDATE: A że w efekcie w elemencie <div>
nic nie zostaje, to pusty <div>
== <div>
z zerową wysokością.
UPDATE 2: Jeszcze kwestia, dlaczego taki sam float
ustawiony dla elementu <div>
i jego zawartości rozwiązuje sprawę. Chodzi o to, że wtedy <div>
jest jakby przesunięty do tego samego układu elementów, co jego zawartość. Spróbuj dać dla elementu <div>
wartość float: right
, dla jednego <a>
też wartość float: right
, a dla drugiego float: left
, lub jakoś podobnie, i zobacz efekty.