Twitter Bootstrap - adicione espaço superior entre as linhas

483

Como adicionar margem superior aos class="row"elementos usando a estrutura de inicialização do twitter?

sou eu
fonte

Respostas:

801

Editar ou substituir a linha no bootstrap do Twitter é uma má ideia, porque essa é uma parte essencial do andaime da página e você precisará de linhas sem uma margem superior.

Para resolver isso, crie uma nova classe "buffer superior" que adicione a margem padrão necessária.

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

E, em seguida, use-o nas linhas divs, nas quais você precisa de uma margem superior.

<div class="row top-buffer"> ...
Acyra
fonte
45
A edição da linha nativa está errada para uma estrutura, e a nova classe deve apenas complementar a classe da linha ... é uma diferença sutil, mas no Bootstrap do Twitter, a linha tem uma função de layout de página específica. De qualquer forma, estou apenas tentando ajudar, minha solução está funcionando para o problema.
Acyra
11
de jeito nenhum, essas respostas são IMHO ligeiramente diferentes. Este é mais utilizável, pois inclui o "nomeie seu estilo de classe para que seu html seja mais fácil" e você pode ler a margem superior no html, em vez de rowSpecificForName. Esta resposta está mais alinhada com os padrões de inicialização do twitter.
101313 Dean Hiller
2
Eles estão indo para adicionar classes espaçamento vertical específicos em Bootstrap 4: github.com/twbs/bootstrap/issues/4286
icc97
2
Tudo o que aprendi com esses comentários é que os desenvolvedores são muito opinativos e alguns preferem 2 + 3 = 5 e outros 3 + 2 = 5. Continuando ...
Fabio S.
3
@FabioS. O que se deve aprender é que, para uma estrutura como o Bootstrap, editar o código nativo ou substituí-lo é uma má ideia. Os cenários são infinitos, mas aqui estão alguns exemplos. a.) substituição - se você sobrescrever a classe .row, agora precisará percorrer seu projeto e adicionar uma classe adicional às linhas que não devem receber a margem b.) editar código nativo - você herda um projeto no trabalho e deseja para mover para o bootstrap4; OOPS! Nada parece certo !? Agora você tem o fardo de passar pelo arquivo de inicialização 3 tentando descobrir o que diabos o desenvolvedor anterior alterou.
21717
176

Ok, apenas para que você saiba o que aconteceu, eu consertei usando algumas novas classes, como a Acyra diz acima:

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

sempre que eu quero eu faço <div class="row top7"></div>

para obter uma resposta melhor, você pode adicionar, em margin-top:7%vez de, 5pxpor exemplo: D

sou eu
fonte
13
Eu sinto que esta solução é muito mais elegante que a solução aceita.
precisa saber é o seguinte
72
É o mesmo.
alexander
@alexander, mas mais genérico.
Ejaz
6
Qual é a .top-buffer { margin-top:20px; }diferença .top30 { margin-top:30px; }? Bem, do ponto de vista de qualquer desenvolvedor: é o mesmo. Os ajustes para ajustar-se ao caso de uso não contam aqui. Especialmente não, se o OP respondeu à sua própria pergunta.
21416 Alexander
2
A clássica margem superior de 17 px; Muito útil.
adripanico
129

Bootstrap 3

Se você precisar separar linhas no bootstrap, basta usar .form-group. Isso adiciona margem de 15px ao final da linha.

No seu caso, para obter a margem superior, você pode adicionar esta classe ao .rowelemento anterior

<div class="row form-group">

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

Bootstrap 4

Você pode usar classes de espaçamento interno

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

O "t" no nome da classe o aplica apenas ao lado "superior"; existem classes semelhantes para inferior, esquerda e direita. O número define o tamanho do espaço.

Buksy
fonte
O grupo de forma foi retirado do BS4?
Z. Khullah
3
Não, form-groupainda está presente , mas foram adicionadas classes especiais para margem / preenchimento que podem fazer o trabalho e têm mais opções.
Buksy
Houve várias alterações no Bootstrap V 4? Eu estou em uma versão de 4 e agora mt-3não funciona tão usadoform-group
Nick Schwaderer
Deve funcionar , verifique se o bootstrap css que você vinculou ao seu projeto contém a definição de classe ".mt-3".
Buksy
82

Para o Bootstrap 4, o espaçamento deve ser aplicado usando

classes de utilitário de taquigrafia

no seguinte formato:

{propriedade} {lados} - {tamanho}

Onde a propriedade é uma das seguintes:

  • m - para classes que definem margem
  • p - para classes que definem o preenchimento

Onde lados é um dos seguintes:

  • t - para classes que definem margin-top ou padding-top
  • b - para classes que definem margem inferior ou preenchimento inferior
  • l - para classes que definem margem esquerda ou preenchimento esquerdo
  • r - para classes que definem margem direita ou preenchimento direito
  • x - para classes que definem * -left e * -right
  • y - para classes que definem * -top e * -bottom
  • em branco - para classes que definem uma margem ou preenchimento nos 4 lados do elemento

Onde o tamanho é um dos seguintes:

  • 0 - para classes que eliminam a margem ou o preenchimento, definindo-o como 0
  • 1 - (por padrão) para classes que definem a margem ou o preenchimento para $ espaçador * .25
  • 2 - (por padrão) para classes que definem a margem ou o preenchimento para $ espaçador * .5
  • 3 - (por padrão) para classes que definem a margem ou o preenchimento para $ spacer
  • 4 - (por padrão) para classes que definem a margem ou o preenchimento para $ espaçador * 1,5
  • 5 - (por padrão) para classes que definem a margem ou o preenchimento para $ spacer * 3
  • auto - para classes que definem a margem como auto

Portanto, você deve executar um destes procedimentos:

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

Leia os documentos para obter mais explicações. Experimente exemplos ao vivo aqui .

Rajkaran Mishra
fonte
3
Essa deve ser a resposta aceita agora com o lançamento do Bootstrap 4. Ele vem com essas classes internas, sem a necessidade de criar novas.
Matt K
45

Às vezes, a margem superior pode causar problemas de design:

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

Portanto, recomendo criar "classes de margem inferior" em vez de "classes de margem superior" e aplicá-las ao item anterior.

Se você estiver usando o Bootstrap importando arquivos LESS Bootstrap, tente definir as classes na margem inferior com espaços proporcionais ao Tema do 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);}  
Kurroman
fonte
33

Adicionei essas classes à minha folha de estilo de inicialização

.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; }

Exemplo

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

Estou usando essas classes para alterar a margem 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; }

Quando eu preciso que um elemento tenha espaçamento 2em do elemento acima, eu o uso assim:

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

Se você preferir pixels, altere o em para px para que seja do seu jeito.

Hexodus
fonte
6
Boa ideia, mas eu abstraio os números, pois eles são muito específicos. Se você ficar com abstrações como s, m, l, xl, xxl, etc, poderá alterar os tamanhos via css sem precisar alterar os nomes nos modelos.
Mike Purcell
1
@ MikePurcell Bom pensamento e pode ser a solução certa para você. Mas eu prefiro uma maneira mais exata de definir margens. Utilizá-los em vez de px me dá uma maneira solta de alcançá-lo sem ser muito específico.
Hexodus
3
Qual é o benefício de <div class="row margin-top-20">mais <div class"row" style="margin-top: 2.0em">?
icc97
@ icc97 Basicamente, separe as preocupações, mas aqui você pode ver outras opiniões: stackoverflow.com/a/2612494/1683224 .
Wiley Marques
@WileyMarques Isso é verdade para uma classe chamada, por exemplo, "top-buffer" (como na resposta aceita), mas não faz sentido para uma classe chamada margin-top-20. A menos que você esteja feliz por a margem entre os 20 melhores adicionar algo diferente de 2 itens de preenchimento, o que seria confuso.
Thelem 12/12/16
4

Bootstrap 4 alpha, para margin-top: nomes abreviados da classe CSS mt-1, mt-2 (mt-lg-5, mt-sm-2) iguais para a parte inferior, direita, esquerda e você também possui a classe automática ml- auto

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

As unidades são de 1a 5: no variables.scss, o que significa que, se você configurar o mt-1, ele dará 0,25rem da margem 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;

leia mais aqui

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

Sherif SALEH
fonte
3

Adicione a esta classe no arquivo .css:

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

ou crie uma nova classe e adicione-a ao elemento

.rowSpecificFormName td {
    margin-top: 50px;
}
Nielsen Ramon
fonte
7
uhmmmmm eu não gosto de tocar no css, e se eu precisar de linhas sem margem em outras páginas?
itsme 10/04/12
Você poderia fazer uma nova classe .rowSpecificForm
Nielsen Ramon
2
Mas não há classe css definida para apenas 'margin-top' no Twitter Bootstrap.
Nielsen Ramon
estranho eles não setado alguns classe forspacing verticalmente, eu preciso adicioná-los não há outra solução: /, graças Nielsen
itsme
8
lembre-se de cascatas CSS, para que você nunca precise editar o bootstrap.css.
ONOZ 10/04/12
1

Se você deseja alterar apenas uma página, adicione a seguinte regra de estilo:

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

No Bootstrap 4 alpha +, você pode usar este

class margin-bottom-5

As classes são nomeadas usando o formato: {property}-{sides}-{size}

Al Quarashi
fonte
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>
shiva krishna
fonte
Por favor, adicione explicações à sua resposta. Responder sem explicações é inútil.
ADreNaLiNe-DJ
1

Bootstrap3

CSS (somente sarjeta, sem margens):

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

CSS (margens iguais em torno de 15px / 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>

(com SASS ou LESS 15px pode ser uma variável do bootstrap)

Isometriq
fonte
1
<div class="row row-padding">

código simples

Harshvardhan Singh Baghel
fonte
1
usando inicialização - 4 você pode adicionar essa classe para fazer o espaçamento entre linhas
Harshvardhan Singh Baghel
0

você pode adicionar este código:

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

Se você estiver usando o BootStrap 3.3.7, poderá usar a biblioteca de código aberto bootstrap-spacer via NPM

npm install bootstrap-spacer

ou você pode visitar a página do github:

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

Aqui está um exemplo de como isso funciona para espaçar linhas usando a classe .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>

Se você precisar de espaços entre colunas, também poderá adicionar a classe .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>

E você também pode combinar várias classes .row-espaçador e .row-col-espaçador:

<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>
Chigozie Orunta
fonte
1
Gostaria de aconselhar contra a adição de uma dependência para 40 linhas de css
Andrew diamante
-3

O meu truque. Não é tão limpo, mas funciona bem para mim

<p>&nbsp;</p>
asiniy
fonte