Cuando desea agregar espacios en blanco entre elementos HTML (usando CSS), ¿a qué elemento lo adjunta?¿Dónde colocas tus márgenes de CSS?
estoy regularmente en situaciones a lo largo de estas líneas:
<body>
<h1>This is the heading</h1>
<p>This is a paragraph</p>
<h1>Here's another heading</h1>
<div>This is a footer</div>
</body>
Ahora, dicho que quiera 1 em de espacio entre cada uno de estos elementos, pero ninguno por encima de la primera h1 o por debajo de la última div. ¿A qué elementos lo adjuntaré?
Obviamente, no hay verdadera técnica diferencia entre este:
h1, p { margin-bottom: 1em; }
... y esto ...
div { margin-top: 1em; }
p { margin-top: 1em; margin-bottom: 1em }
Lo que me interesa es factores secundarios:
- Consistencia
- Aplicabilidad a todas las situaciones
- Facilidad/Simplicidad
- Facilidad de hacer cambios
Por ejemplo: en este escenario particular, diría que la primera solución es mejor que el segundo, ya que es más sencillo; solo está adjuntando un margen inferior a dos elementos en una sola definición de propiedad. Sin embargo, estoy buscando una solución más general. Cada vez que trabajo CSS, tengo la sensación de que hay una buena regla de oro para aplicar ... pero no estoy seguro de qué se trata. ¿Alguien tiene una buena discusión?
Si no te importa rehuir IE6 siempre puedes recurrir a los pseudo selectores de CSS2: first-child y: last-child para hacer tus pujas! –
De acuerdo con http://www.quirksmode.org/css/contents.html,: last-child solo es compatible con IE9, por lo tanto, si desea tener los márgenes adecuados en IE7/IE8, aún necesita usar clases. :( –