Este problema se conoce como Margin Collapse y ocurre a veces entre los márgenes superior e inferior de los elementos de bloque. Por eso el margen no funciona en la etiqueta p. … Y en la etiqueta a el margen no funciona porque es un elemento en línea. Es posible que tengas que cambiar su propiedad display a inline-block o block .