2013-02-15 14 views
13

Ostatnio miałem problem z marginesami, ale nie byłem w stanie go rozwiązać. Moje HTML wygląda tak:Margines CSS nakłada się, zamiast podawać odległość

<div class="info-box">Some text</div> 
<div class="form">...</div> 

CSS:

.info-box{ 
    border-radius: 5px; 
    border: 1px solid red; 
    margin-bottom: 20px; 
} 

.form{ 
    margin-top: 20px; 
} 

A problemem było to, że marże pokrywały się wzajemnie, zamiast dać 40px odległość między dwoma elementami.

Moje pytanie brzmi: dlaczego? Zauważyłem, że dodanie do .info-box overflow: hidden naprawiło to, ale może jest lepszy sposób?

+0

można dodawać więcej, ich kontenera inne CSS i HTML. –

Odpowiedz

37

Jeszcze raz - musisz zrozumieć, w jaki sposób interpretowane są marginesy. Marża odnosi się do pozycji innego elementu , z wyłączeniem jego marginesów na poziomie. Nie można sumować marginesów.

How margins work

+1

Tak, ale dlaczego po dodaniu przepełnienia: ukryte dla .info-box działało? Zakładam, że można podsumować paddings? – adi86

+0

@ user1785951 - Wypróbowałem go z twoją sugestią i nie zadziałało to dla mnie :) Tak, można podsumować paddony, ponieważ są one w obrębie elementu blokowego - odnoszą się do elementu zawierającego, a nie rodzeństwa. Ale musisz pamiętać, że nie działają jako marginesy. – Kamo

+0

Ok Dobrze wiem dzięki – adi86

Powiązane problemy