Elementy potomne z marginesami w DIVs
Potrzebuję dwóch kolejnych div
s (z tłem), aby dotykały się bezproblemowo, jeden pod drugim. Jednak ten układ psuje się, gdy umieszczam element potomny {[2] } Na Dole div
. Marginesy elementu p
wymuszają pustą lukę między obiema div
s. jest to dziwne zachowanie, ponieważ oczekuję, że margines p
pozostanie w obszarze zawartości i tła div
. Renderuje w ten sam sposób na Firefoksie, Chrome i IE 8.
<div style="background: #ccccff">Top Div</div>
<div style="background: #ffcccc"><p>Bottom Div</p></div>
Oto Jak to wygląda na przykład.
Mógłbym to naprawić, zmieniając marginesy na paddings dla elementu p
, ale musiałbym to zrobić również z elementami nagłówka, elementami listy i innymi elementami, których chcę użyć na początku div
. To nie jest pożądane.
Czy ktoś mógłby mnie oświecić: jakie zastrzeżenie modelu pudełkowego mi brakuje? Czy istnieje łatwy sposób, aby to naprawić, najlepiej modyfikując Styl div
?
4 answers
To jest oczekiwane zachowanie *. Jest kilka sposobów na obejście tego. Jeśli unosisz divy, będą one zawierać marginesy elementów potomnych i zapobiegać zapadaniu się marginesów. Innym podejściem jest dodanie obramowania lub wypełnienia do div.
* marginesy div I p "łączą się tworząc pojedynczy margines", mimo że są zagnieżdżone, ponieważ mają przylegające marginesy bez wypełnienia lub granicy między nimi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 06:33:38
Dodaj overflow: hidden
LUB overflow: auto
do div
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 06:32:34
Rozwiązanie 1
Dodaj overflow: hidden / auto do zawierającego div, aby zapobiec zapadaniu się marginesu.
Rozwiązanie 2
Dodaj dodatnią wyściółkę do zawierającego div I równy ujemny margines do elementu wewnętrznego
Nowe Rozwiązanie
Dodaj padding 0.01 px do zawierającego div, zapobiegnie to zapadaniu się marginesu, ale nie będzie wymagało żadnego ujemnego marginesu na elemencie wewnętrznym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-12 20:01:53
Ustawienie dodatniego wypełnienia i odpowiadającego ujemnego marginesu na elemencie div
wydaje się rozwiązywać problem, choć Nie wiem dlaczego.
<div style="background: #ccccff">Top Div</div>
<div style="background: #ffcccc; padding: 1px; margin: -1px"><p>Bottom Div</p></div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 06:33:18