Eliminar márgenes para el primer/último elemento | Programar Plus

A veces puede ser deseable eliminar el margen superior o izquierdo del primer elemento de un contenedor. Asimismo, el margen derecho o inferior del último elemento de un contenedor. Puede hacer esto aplicando clases manualmente al HTML:

.first { margin-top: 0 !important; margin-left: 0 !important; }
.last { margin-bottom: 0 !important; margin-right: 0 !important; }

La puesta a cero “superior”/”inferior” es útil con una pila vertical de elementos, la puesta a cero “izquierda”/”derecha” es útil para filas horizontales (en general). Pero… este método depende de que usted mismo agregue clases al HTML. Los pseudo-selectores pueden ser una forma mejor y menos intrusiva de hacerlo:

* > :first-child { margin-top: 0 !important; margin-left: 0 !important; }
* > :last-child { margin-bottom: 0 !important; margin-right: 0 !important; }

Es posible que desee reemplazar el * con selectores más específicos según sus necesidades.

“Cada tercio”, etc.

Digamos que tenía un bloque flotante de 9 elementos, 3 por 3. Es muy común que necesite eliminar el margen derecho de los elementos 3, 6 y 9. El pseudo-selector de nth-child podría ayudar allí:

* > :nth-child(3n+3) { margin-right: 0; }

La ecuación allí, 3n+3, funciona así:

(3×0)+3 = 3
(3×1)+3 = 6
(3×2)+3 = 9
etc

jQuery

jQuery usa selectores CSS3, que incluyen: primer hijo,: último hijo y: n-ésimo hijo (). Esto significa que en los navegadores que no admiten o no admiten completamente estos selectores, FUNCIONARÁN en jQuery, por lo que puede sustituir la compatibilidad con CSS por compatibilidad con JavaScript. Por ejemplo:

$("* > :nth-child(3n+3)").css("margin-right", 0);

Compatibilidad con navegador

:first-child y :last-child funcionan en la última versión de todos los principales navegadores, pero no en IE 6. :first-child es compatible con IE 7+. :nth-child funciona en Safari 3+, Firefox 3.5+ y Chrome 1+, pero aún no funciona en IE8.

Véase también el artículo de David Oliver.

(Visited 3 times, 1 visits today)