Jakbyś znał podstawy CSSa to byś wiedział.
Nie wszystkie elementy poddają się marginowi. Na pewno robią to elementy z atrybutem wyświetlania block
, inline-block
i niektóre elementy liniowe.
Część rzeczy z doświadczenia się pamięta co poddaje się marginowi a co nie, część trzeba wziąć na logikę. Inna sprawa, że stan innych elementów obrobionych w CSS też wpływa na to, jak działa margin (czy np. nadrzędny element jest realatywny, czy absolutny, czy liniowy, czy jeszcze inne właściwości).
Znacznik <td>
to ani element liniowy ani blokowy. To jest komórka tabeli. Tabela z założenia jest elementem spójnym, w którym nie występują odległości między komórkami jak między np. divami. To jest inna struktura rządząca się swoimi prawami. Można sterować paddingiem, który jest wewnętrzym marginesem (nazwijmy to), można sterować ułożeniem elementów w poziomie (vertical-align), ustalać grubości obramowań i wiele innych rzeczy, których czasami normalnie nie ustawisz w innych elementach.
Reasumując - źle do sprawy podchodzisz. Nie masz wiedzy a próbujesz coś zrobić. Miotasz się.
Zamiast pisania 100 postów na forum o jedną pierdołę, polecam CI lekturę http://webmaster.helion.pl/index.php/kurs-html oraz http://webmaster.helion.pl/index.php/kurs-css. Świetny kurs dla początkujących.
Dobrze byłoby abyś jeszcze zgłębił temat coś na tej zasadzie: https://helion.pl/ksiazki/css-wedlug-erica-meyera-kolejna-odslona-eric-a-meyer,cssods.htm#format/d
Facet opisuje tam całe zachowanie CSSa i można dowiedzieć się dokładnie czemu elementy zachowują się tak a nie inaczej.
Cały ten czas poświęcony na forum, jak sobie przeznaczysz na te lektury to szybciej czegokolwiek się nauczysz niż będziesz zadawał pytania bez celu.