Bootstrap di Twitter: aggiungi spazio tra le righe


483

Come aggiungere margine superiore agli class="row"elementi utilizzando Twitter Bootstrap Framework?

Risposte:


801

Modificare o sovrascrivere la riga nel bootstrap di Twitter è una cattiva idea, perché questa è una parte fondamentale dell'impalcatura della pagina e avrai bisogno di righe senza un margine superiore.

Per risolvere questo problema, crea invece una nuova classe "top-buffer" che aggiunge il margine standard di cui hai bisogno.

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

E poi usalo sui div della riga dove hai bisogno di un margine superiore.

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

45
La modifica della riga nativa è errata per un framework e la nuova classe dovrebbe semplicemente integrare la classe di riga ... è una differenza sottile ma in Twitter Bootstrap la riga ha un ruolo di layout di pagina specifico. Ad ogni modo, sto solo cercando di aiutare, la mia soluzione è efficace per il problema.
Acyra,

11
in nessun caso, queste risposte sono leggermente diverse IMHO. Questo è più utilizzabile in quanto abbraccia il "nome del tuo stile di classe in modo che il tuo HTML legga più facilmente" e puoi leggere margin-top in HTML invece di rowSpecificForName. Questa risposta è più in linea con i modelli di bootstrap di Twitter.
Dean Hiller,

2
Aggiungeranno specifiche classi di spaziatura verticale in Bootstrap 4: github.com/twbs/bootstrap/issues/4286
icc97

2
Tutto ciò che ho imparato da questi commenti è che gli sviluppatori sono molto supponente e alcuni preferiscono 2 + 3 = 5 e altri 3 + 2 = 5. Andando avanti ...
Fabio S.,

3
@FabioS. Ciò che dovrebbe essere appreso è che per un framework come Bootstrap, modificare il codice nativo o sovrascriverlo è una cattiva idea. Gli scenari sono infiniti ma qui ci sono un paio di esempi. a.) sovrascrittura - se si sovrascrive la classe .row ora è necessario passare attraverso il progetto e aggiungere una classe aggiuntiva alle righe che non dovrebbero ricevere il margine b.) modifica del codice nativo - si eredita un progetto al lavoro e si desidera per passare a bootstrap4; OOPS! Niente sembra giusto !? Ora hai l'onere di passare attraverso il file bootstrap 3 cercando di trovare cosa ha cambiato lo sviluppatore precedente.
peroija,

176

Ok solo per farti sapere cosa è successo dopo, ho risolto usando alcune nuove classi come Acyra dice sopra:

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

quando voglio lo faccio <div class="row top7"></div>

per una migliore risposta è possibile aggiungere margin-top:7%anziché 5pxad esempio: D


13
Sento che questa soluzione è molto più elegante della soluzione accettata.
rdiaz82,

72
È lo stesso.
alexander

@alexander ma più generico.
Ejaz,

6
In cosa .top-buffer { margin-top:20px; }differisce da .top30 { margin-top:30px; }? Bene, dal punto di vista di qualsiasi sviluppatore: è lo stesso. I contributi per adattarsi al caso d'uso non contano qui. In particolare, se l'OP ha risposto alla sua stessa domanda.
alexander

2
Il classico margine superiore di 17px; Molto utile.
adripanico,

129

Bootstrap 3

Se devi separare le righe nel bootstrap, puoi semplicemente usare .form-group. Ciò aggiunge un margine di 15 px in fondo alla riga.

Nel tuo caso, per ottenere il margine superiore, puoi aggiungere questa classe .rowall'elemento precedente

<div class="row form-group">

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

Bootstrap 4

Puoi utilizzare le classi di spaziatura integrate

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

La "t" nel nome della classe lo applica solo al lato "superiore", esistono classi simili per il fondo, a sinistra, a destra. Il numero definisce le dimensioni dello spazio.


Il gruppo forma è stato rimosso da BS4?
Z. Khullah,

3
No, form-groupè ancora presente , ma sono state aggiunte classi speciali per margin / padding che possono fare il lavoro e hanno più opzioni.
Buksy,

Ci sono state più modifiche a questo in Bootstrap V 4? Sono su una versione di 4 ora e mt-3non funziona così usatoform-group
Nick Schwaderer

Dovrebbe funzionare , controlla se il bootstrap css che hai collegato al tuo progetto contiene una definizione di classe ".mt-3".
Buksy,

82

Per Bootstrap 4 la spaziatura dovrebbe essere applicata usando

classi di utilità stenografia

nel seguente formato:

{} {Proprietà lati} - {size}

Dove la proprietà è una di:

  • m - per le classi che stabiliscono un margine
  • p - per le classi che impostano il riempimento

Dove lati è uno dei:

  • t - per le classi che impostano margin-top o padding-top
  • b - per le classi che impostano il margine inferiore o il margine inferiore
  • l - per le classi che impostano margin-left o padding-left
  • r - per le classi che impostano margine-destra o padding-destra
  • x - per le classi che impostano sia * -left che * -right
  • y - per le classi che impostano sia * -top che * -bottom
  • vuoto - per le classi che impostano un margine o un'imbottitura su tutti e 4 i lati dell'elemento

Dove la dimensione è una di:

  • 0 - per le classi che eliminano il margine o il riempimento impostandolo su 0
  • 1 - (per impostazione predefinita) per le classi che impostano il margine o il riempimento su $ spacer * .25
  • 2 - (per impostazione predefinita) per le classi che impostano il margine o il riempimento su $ spacer * .5
  • 3 - (per impostazione predefinita) per le classi che impostano il margine o il riempimento su $ spacer
  • 4 - (per impostazione predefinita) per le classi che impostano il margine o il riempimento su $ spacer * 1.5
  • 5 - (per impostazione predefinita) per le classi che impostano il margine o il riempimento su $ spacer * 3
  • auto - per le classi che impostano il margine su auto

Quindi dovresti fare uno di questi:

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

Leggi i documenti per ulteriori spiegazioni. Prova esempi dal vivo qui .


3
Questa dovrebbe essere la risposta accettata ora con il rilascio di Bootstrap 4. Viene fornito con queste classi integrate, non è necessario crearne di nuove.
Matt K

45

A volte margin-top può causare problemi di progettazione:

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

Quindi, consiglio di creare "classi margin-bottom" anziché "margin-top class" e applicarle all'elemento precedente.

Se si utilizza Bootstrap per importare MENO file Bootstrap, provare a definire le classi margin-bottom con spazi tematici Bootstrap proporzionali:

.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

Ho aggiunto queste classi al mio foglio di stile 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; }

Esempio

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

27

Sto usando queste classi per modificare il margine superiore:

.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 ho bisogno di un elemento per avere una spaziatura 2em dall'elemento sopra lo uso in questo modo:

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

Se preferisci i pixel, cambiali in px per farlo a modo tuo.


6
Buona idea, ma astraggo i numeri, poiché sono troppo specifici. Se ti attieni ad astrazioni come s, m, l, xl, xxl, ecc., Puoi cambiare le dimensioni tramite CSS senza cambiare i nomi nei modelli.
Mike Purcell,

1
@MikePurcell Buona idea e potrebbe essere la soluzione giusta per te. Ma preferisco un modo più esatto per definire i margini. L'uso di em anziché px mi dà un modo libero per ottenerlo senza essere troppo specifico.
Hexodus,

3
Qual è il vantaggio di <div class="row margin-top-20">over <div class"row" style="margin-top: 2.0em">?
icc97,

@ icc97 Fondamentalmente, separato dalle preoccupazioni, ma qui puoi vedere altre opinioni: stackoverflow.com/a/2612494/1683224 .
Wiley Marques,

@WileyMarques Questo è vero per una classe chiamata ad esempio "top-buffer" (come nella risposta accettata), ma non ha senso per una classe chiamata margin-top-20. A meno che tu non sia felice per margin-top-20 di aggiungere effettivamente qualcosa di diverso dai 2em di padding, il che sarebbe solo fonte di confusione.
entro il


4

Bootstrap 4 alpha, per margin-top: abbreviazione dei nomi delle classi CSS mt-1, mt-2 (mt-lg-5, mt-sm-2) stessi per il fondo, a destra, a sinistra e hai anche la classe automatica ml- auto

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

Le unità sono da 1a 5: in variabili.scss che significa che se si imposta mt-1, si ottiene .25rem di margine superiore.

$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;

leggi di più qui

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


3

Aggiungi a questa classe nel file .css:

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

oppure crea una nuova classe e aggiungila all'elemento

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

7
uhmmmmm non mi piace totouch il css, e se avessi bisogno di righe senza margine in altre pagine?
È il

Potresti creare una nuova classe .rowSpecificForm
Nielsen Ramon

2
Ma non esiste una classe CSS definita solo per "margin-top" in Bootstrap di Twitter.
Nielsen Ramon,

strano che non ha settato poche classe forspacing verticalmente, ho bisogno di aggiungere loro non c'è altra soluzione: /, grazie Nielsen
itsme

8
ricorda CSS CSS, quindi non dovrai mai modificare bootstrap.css.
ONOZ,

1

Se vuoi cambiare solo su una pagina, aggiungi la seguente regola di stile:

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

1

In Bootstrap 4 alpha + puoi usarlo

class margin-bottom-5

Le classi vengono denominate usando il 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>

Aggiungi spiegazioni alla tua risposta. Rispondere senza spiegazioni è inutile.
ADreNaLiNe-DJ

1

Bootstrap3

CSS (solo grondaia, senza margini intorno):

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

CSS (margini uguali intorno, 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>

(con SASS o LESS 15px potrebbe essere una variabile da bootstrap)



0

puoi aggiungere questo codice:

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


0

Se si utilizza BootStrap 3.3.7, è possibile utilizzare la libreria open source bootstrap-spacer tramite NPM

npm install bootstrap-spacer

oppure puoi visitare la pagina di github:

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

Ecco un esempio di come funziona per spaziare le righe usando la 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 avresti bisogno di spazi tra le colonne, puoi anche aggiungere la 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 puoi anche combinare insieme varie classi .row-spacer e .row-col-spacer:

<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
Vorrei sconsigliare di aggiungere una dipendenza per 40 righe di css
Andrew Diamond,

-3

Il mio trucco. Non così pulito, ma funziona bene per me

<p>&nbsp;</p>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.