Twitter Bootstrap: agregue el espacio superior entre filas


483

¿Cómo agregar margen superior a class="row"elementos usando el marco de arranque de twitter?

Respuestas:


801

Editar o anular la fila en el bootstrap de Twitter es una mala idea, porque esta es una parte central del andamiaje de la página y necesitará filas sin un margen superior.

Para resolver esto, cree una nueva clase "top-buffer" que agregue el margen estándar que necesita.

.top-buffer { margin-top:20px; }

Y luego úselo en los divisores de fila donde necesita un margen superior.

<div class="row top-buffer"> ...

45
Editar la fila nativa es incorrecto para un marco, y la nueva clase solo debe complementar la clase de fila ... es una sutil diferencia, pero en Twitter Bootstrap la fila tiene un rol de diseño de página específico. De todos modos, solo estoy tratando de ayudar, mi solución funciona para el problema.
Acyra

11
de ninguna manera, estas respuestas son ligeramente diferentes en mi humilde opinión. Este es más útil ya que abarca el "nombre de su estilo de clase para que su html se lea más fácilmente" y puede leer margin-top en el html en lugar de rowSpecificForName. Esta respuesta está más en línea con los patrones de arranque de Twitter.
Dean Hiller

2
Agregarán clases específicas de espaciado vertical en Bootstrap 4: github.com/twbs/bootstrap/issues/4286
icc97

2
Todo lo que aprendí de estos comentarios es que los desarrolladores son muy obstinados y algunos prefieren 2 + 3 = 5 y otros 3 + 2 = 5. Continuando ...
Fabio S.

3
@FabioS. Lo que se debe aprender es que para un marco como Bootstrap, editar el código nativo o sobrescribirlo es una mala idea. Los escenarios son infinitos, pero aquí hay un par de ejemplos. a.) sobrescribir: si sobrescribe la clase .row, ahora necesita revisar su proyecto y agregar una clase adicional a las filas que no deberían recibir el margen b.) editar el código nativo: hereda un proyecto en el trabajo y desea subir a bootstrap4; ¡Vaya! ¿Nada se ve bien? Ahora tiene la carga de revisar el archivo bootstrap 3 tratando de encontrar qué demonios alteró el desarrollador anterior.
peroija

176

Ok, solo para hacerle saber lo que sucedió entonces, arreglé el uso de algunas clases nuevas como Acyra dice anteriormente:

.top5 { margin-top:5px; }
.top7 { margin-top:7px; }
.top10 { margin-top:10px; }
.top15 { margin-top:15px; }
.top17 { margin-top:17px; }
.top30 { margin-top:30px; }

cuando quiero lo hago <div class="row top7"></div>

para una mejor respuesta, puede agregar en margin-top:7%lugar de, 5pxpor ejemplo: D


13
Siento que esta solución es mucho más elegante que la solución aceptada.
rdiaz82

72
Es lo mismo.
alexander

@alexander pero más genérico.
Ejaz

66
¿Cómo es .top-buffer { margin-top:20px; }diferente de .top30 { margin-top:30px; }? Bueno, desde el punto de vista de cualquier desarrollador: es lo mismo. Los ajustes para ajustarse al caso de uso no cuentan aquí. Especialmente no, si el OP respondió a su propia pregunta.
Alexander

2
El clásico margen superior de 17px; Muy útil.
adripanico

129

Bootstrap 3

Si necesita separar filas en bootstrap, simplemente puede usar .form-group. Esto agrega un margen de 15 píxeles al final de la fila.

En su caso, para obtener un margen superior, puede agregar esta clase al .rowelemento anterior

<div class="row form-group">

/* From bootstrap.css */
.form-group {
        margin-bottom: 15px;
}

Bootstrap 4

Puedes usar clases de espaciado incorporadas

<div class="row mt-3"></div>

La "t" en el nombre de la clase hace que se aplique solo al lado "superior", hay clases similares para la parte inferior, izquierda, derecha. El número define el tamaño del espacio.


¿Se eliminó el grupo de forma de BS4?
Z. Khullah

3
No, form-grouptodavía está presente , pero se han agregado clases especiales para margen / relleno que pueden hacer el trabajo y tienen más opciones.
Buksy

¿Ha habido múltiples cambios en esto en Bootstrap V 4? Estoy en una versión de 4 ahora y mt-3no funciona tan usadoform-group
Nick Schwaderer

Debería funcionar , verifique si bootstrap css que ha vinculado a su proyecto contiene la definición de clase ".mt-3".
Buksy el

82

Para Bootstrap 4, el espaciado debe aplicarse usando

clases de utilidad abreviada

en el siguiente formato:

{propiedad} {lados} - {tamaño}

Donde la propiedad es uno de:

  • m - para clases que establecen margen
  • p - para clases que establecen relleno

Donde lados es uno de:

  • t - para clases que establecen margin-top o padding-top
  • b - para clases que establecen margen inferior o relleno inferior
  • l - para clases que establecen margen izquierdo o relleno izquierdo
  • r - para clases que establecen margen derecho o relleno derecho
  • x - para clases que establecen * -left y * -right
  • y - para clases que establecen tanto * -top como * -bottom
  • en blanco: para las clases que establecen un margen o relleno en los 4 lados del elemento

Donde el tamaño es uno de:

  • 0: para clases que eliminan el margen o el relleno al establecerlo en 0
  • 1 - (por defecto) para las clases que establecen el margen o el relleno en $ spacer * .25
  • 2 - (por defecto) para las clases que establecen el margen o el relleno en $ spacer * .5
  • 3 - (por defecto) para las clases que establecen el margen o el relleno en $ spacer
  • 4 - (por defecto) para las clases que establecen el margen o el relleno en $ spacer * 1.5
  • 5 - (por defecto) para las clases que establecen el margen o el relleno en $ spacer * 3
  • auto: para clases que establecen el margen en auto

Entonces deberías estar haciendo cualquiera de estos:

<div class="row mt-1">
<div class="row mt-2">
          ...
<div class="row mt-5">

Lea los documentos para más explicaciones. Prueba ejemplos en vivo por aquí .


3
Esta debería ser la respuesta aceptada ahora con el lanzamiento de Bootstrap 4. Viene con estas clases integradas, no es necesario crear otras nuevas.
Matt K

45

A veces, el margen superior puede causar problemas de diseño:

http://www.w3.org/TR/CSS2/box.html#collapsing-margins

Por lo tanto, recomiendo crear "clases de margen inferior" en lugar de "clases de margen superior" y aplicarlas al elemento anterior.

Si está utilizando Bootstrap importando MENOS archivos Bootstrap, intente definir las clases de margen inferior con espacios proporcionales del tema Bootstrap:

.margin-bottom-xs {margin-bottom: ceil(@line-height-computed / 4);}  
.margin-bottom-sm {margin-bottom: ceil(@line-height-computed / 2);} 
.margin-bottom-md {margin-bottom: @line-height-computed;}
.margin-bottom-lg {margin-bottom: ceil(@line-height-computed * 2);}  

33

Agregué estas clases a mi hoja de estilo bootstrap

.voffset  { margin-top: 2px; }
.voffset1 { margin-top: 5px; }
.voffset2 { margin-top: 10px; }
.voffset3 { margin-top: 15px; }
.voffset4 { margin-top: 30px; }
.voffset5 { margin-top: 40px; }
.voffset6 { margin-top: 60px; }
.voffset7 { margin-top: 80px; }
.voffset8 { margin-top: 100px; }
.voffset9 { margin-top: 150px; }

Ejemplo

<div class="container">
  <div class="row voffset2">
    <div class="col-lg-12">
      <p>
        Vertically offset text.
      </p>
    </div>
  </div>
</div>

27

Estoy usando estas clases para alterar el margen superior:

.margin-top-05 { margin-top: 0.5em; }
.margin-top-10 { margin-top: 1.0em; }
.margin-top-15 { margin-top: 1.5em; }
.margin-top-20 { margin-top: 2.0em; }
.margin-top-25 { margin-top: 2.5em; }
.margin-top-30 { margin-top: 3.0em; }

Cuando necesito un elemento para tener un espacio de 2em del elemento anterior, lo uso así:

<div class="row margin-top-20">Something here</div>

Si prefiere los píxeles, cambie los em a px para tenerlo a su manera.


66
Buena idea, pero abstraigo los números, ya que son demasiado específicos. Si te quedas con abstracciones como s, m, l, xl, xxl, etc., puedes cambiar los tamaños a través de css sin tener que cambiar los nombres en las plantillas.
Mike Purcell

1
@MikePurcell Buen pensamiento y puede ser la solución adecuada para usted. Pero prefiero una forma más exacta de definir márgenes. Usar em en lugar de px me da una forma flexible de lograrlo sin ser demasiado específico.
Hexodus

3
¿Cuál es el beneficio de <div class="row margin-top-20">más <div class"row" style="margin-top: 2.0em">?
icc97

@ icc97 Básicamente, separado de las preocupaciones, pero aquí puede ver otras opiniones: stackoverflow.com/a/2612494/1683224 .
Wiley Marques

@WileyMarques Eso es cierto para una clase llamada, por ejemplo, "top-buffer" (como en la respuesta aceptada), pero no tiene sentido para una clase llamada margin-top-20. A menos que esté contento con margin-top-20 para agregar algo más que 2ems de relleno, lo que sería confuso.
thelem


4

Bootstrap 4 alpha, para margin-top: abreviatura de los nombres de clase CSS mt-1, mt-2 (mt-lg-5, mt-sm-2), lo mismo para la parte inferior, derecha, izquierda y también tiene la clase automática ml- auto

    <div class="mt-lg-1" ...>

Las unidades son de 1a 5: en las variables.scss, lo que significa que si establece mt-1 le da .25rem de margen superior.

$spacers: (
  0: (
    x: 0,
    y: 0
  ),
  1: (
    x: ($spacer-x * .25),
    y: ($spacer-y * .25)
  ),
  2: (
    x: ($spacer-x * .5),
    y: ($spacer-y * .5)
  ),
  3: (
    x: $spacer-x,
    y: $spacer-y
  ),
  4: (
    x: ($spacer-x * 1.5),
    y: ($spacer-y * 1.5)
  ),
  5: (
    x: ($spacer-x * 3),
    y: ($spacer-y * 3)
  )
) !default;

leer más aquí

https://v4-alpha.getbootstrap.com/utilities/spacing/#horizontal-centering


3

Agregue a esta clase en el archivo .css:

.row {
    margin-left: -20px;
    *zoom: 1;
    margin-top: 50px;
}

o hacer una nueva clase y agregarla al elemento

.rowSpecificFormName td {
    margin-top: 50px;
}

77
uhmmmmm no me gusta tocar el CSS, ¿qué pasa si necesito filas sin margen en otras páginas?
itsme

Podrías hacer una nueva clase .rowSpecificForm
Nielsen Ramon

2
Pero no hay una clase css definida para solo 'margin-top' en Twitter Bootstrap.
Nielsen Ramon

extraño que no establecieron pocas clases para espaciar verticalmente, necesito agregar que no hay otra solución: /, gracias Nielsen
itsme

8
recuerde las cascadas CSS, por lo que nunca tendrá que editar bootstrap.css.
ONOZ

1

Si desea cambiar solo en una página, agregue la siguiente regla de estilo:

 #myCustomDivID .row {
     margin-top:20px;
 }

1

En Bootstrap 4 alpha + puedes usar esto

class margin-bottom-5

Las clases se nombran usando el formato: {property}-{sides}-{size}


1
just take a new class beside every row and apply css of margin-top: 20px;
here is the code below
<style>
  .small-top
   {
     margin-top: 25px;  
   }
</style>    
<div class="row small-top">
   <div class="col-md-12">
   </div>
 </div>

Por favor agregue explicaciones a su respuesta. Responder sin explicaciones es inútil.
ADreNaLiNe-DJ

1

Bootstrap3

CSS (solo canalón, sin márgenes alrededor):

.row.row-gutter {
  margin-bottom: -15px;
  overflow: hidden;
}
.row.row-gutter > *[class^="col"] {
  margin-bottom: 15px;
}

CSS (márgenes iguales alrededor, 15 px / 2):

.row.row-margins {
  padding-top: 7px; /* or margin-top: 7px; */
  padding-bottom: 7px; /* or margin-bottom: 7px; */
}
.row.row-margins > *[class^="col"] {
  margin-top: 8px;
  margin-bottom: 8px;
}

Uso:

<div class="row row-gutter">
    <div class="col col-sm-9">first</div>
    <div class="col col-sm-3">second</div>
    <div class="col col-sm-12">third</div>
</div>

(con SASS o LESS 15px podría ser una variable de bootstrap)



0

puedes agregar este código:

[class*="col-"] {
    padding-top: 1rem;
    padding-bottom: 1rem;
}


0

Si está usando BootStrap 3.3.7, puede usar la biblioteca de código abierto bootstrap-spacer a través de NPM

npm install bootstrap-spacer

o puedes visitar la página de github:

https://github.com/chigozieorunta/bootstrap-spacer

Aquí hay un ejemplo de cómo funciona esto para espaciar filas usando la clase .row-spacer:

<div class="row row-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

<div class="row row-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

Si necesita espacios entre columnas, también puede agregar la clase .row-col-spacer:

<div class="row row-col-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

Y también puede combinar varias clases .row-spacer y .row-col-spacer juntas:

<div class="row row-spacer row-col-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

1
Aconsejaría no agregar una dependencia para 40 líneas de CSS
Andrew Diamond

-3

Mi truco No tan limpio, pero funciona bien para mí.

<p>&nbsp;</p>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.