Cinque colonne uguali nel bootstrap di Twitter


361

Voglio avere 5 colonne uguali su una pagina che sto costruendo e non riesco a capire come la griglia a 5 colonne viene utilizzata qui: http://web.archive.org/web/20120416024539/http://domain7 .com / / mobile tools / bootstrap / reattivo

La griglia a cinque colonne viene dimostrata sopra parte del framework Twitter Bootstrap?


Stai guardando una versione molto vecchia del bootstrap. Stai cercando di avere una griglia "responsive" a 5 colonne sul bootstrap (più recente, spero)?
Andres Ilich,

3
Mi sono appena reso conto che quello indicato è v1.3.0 e la corrente è 2.0.2. L'ultima versione è una griglia a 12 colonne che significa che posso avere 2,3,4 e 6 colonne uguali. sarebbe possibile avere 5 colonne uguali senza dover cambiare molte cose.
Gandalf,

puoi sì, ma richiederà pesanti modifiche ad alcuni degli elementi della griglia e anche agli elementi della griglia reattivi. Il tuo sito è reattivo? Sarebbe un po 'più facile trovare una risposta in quel modo, altrimenti sarebbe un sacco di codice.
Andres Ilich,

Sì, il sito è reattivo ma dovrei modificare anche gli elementi della griglia, non solo la parte reattiva.
Gandalf,

1
Sto riscuotendo un certo successo * con .container.one-fifth.column {larghezza: 17%; } anche se mi aspetto che qualcosa di tremendo mi tolga il respiro. 17,87847%.
Gandalf,

Risposte:


407

Usa cinque div con una classe di span2 e dai al primo una classe di offset1.

<div class="row-fluid">
    <div class="span2 offset1"></div>
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
</div>

Ecco! Cinque colonne equidistanti e centrate.


In bootstrap 3.0, questo codice sarebbe simile

<div class="row">
    <div class="col-md-2 col-md-offset-1"></div>
    <div class="col-md-2"></div>
    <div class="col-md-2"></div>
    <div class="col-md-2"></div>
    <div class="col-md-2"></div>
</div>

44
non va su tutta la larghezza. è carino però
machineaddict

45
La soluzione che ho pubblicato è a tutta larghezza e crea 5 colonne uguali: QUI È LA RISPOSTA .
Fizzix,

5
Non va a tutta larghezza come la risposta @fizzix fornisce di seguito. Crea un margine indesiderato su entrambi i lati, in questo modo - jsfiddle.net/wdo8L1ww
Fizzix

3
le colonne sembrano piuttosto piccole con questa soluzione, quindi preferisco la soluzione
@fizzix

2
Bootstrap 4 5 cols (a tutta larghezza) non richiede CSS o SASS: stackoverflow.com/a/42226652/171456
Zim,

526

Per Bootstrap 3 e versioni successive

Un fantastico larghezza 5 colonne layout con Twitter Bootstrap è stato creato qui .

Questa è di gran lunga la soluzione più avanzata poiché funziona perfettamente con Bootstrap 3. Ti consente di riutilizzare le classi più e più volte, in coppia con le attuali classi Bootstrap per una progettazione reattiva.

CSS:
aggiungi questo al tuo foglio di stile globale o anche alla fine del bootstrap.cssdocumento.

.col-xs-5ths,
.col-sm-5ths,
.col-md-5ths,
.col-lg-5ths {
    position: relative;
    min-height: 1px;
    padding-right: 15px;
    padding-left: 15px;
}

.col-xs-5ths {
    width: 20%;
    float: left;
}

@media (min-width: 768px) {
    .col-sm-5ths {
        width: 20%;
        float: left;
    }
}

@media (min-width: 992px) {
    .col-md-5ths {
        width: 20%;
        float: left;
    }
}

@media (min-width: 1200px) {
    .col-lg-5ths {
        width: 20%;
        float: left;
    }
}

Mettilo in pratica!
Ad esempio, se vuoi creare un elemento div che si comporti come un layout a cinque colonne su schermi medi e come due colonne su schermi più piccoli, devi solo usare qualcosa del genere:

<div class="row">
    <div class="col-md-5ths col-xs-6">
       ...
    </div>
</div>

DEMO DI LAVORO - Espandi la cornice per vedere le colonne diventare reattive.

UN ALTRO DEMO - Incorporando le nuovecol-*-5thsclassi con altri comecol-*-3ecol-*-2. Ridimensiona la cornice per vederli tutti cambiarecol-xs-6in vista reattiva.


Per Bootstrap 4

Bootstrap 4 ora utilizza Flexbox per impostazione predefinita, in modo da ottenere l'accesso ai suoi poteri magici immediatamente. Controlla le colonne del layout automatico che regolano in modo dinamico la larghezza in base al numero di colonne nidificate.

Ecco un esempio:

<div class="row">
   <div class="col">
      1 of 5
   </div>
   <div class="col">
      2 of 5
   </div>
   <div class="col">
      3 of 5
   </div>
   <div class="col">
      4 of 5
   </div>
   <div class="col">
      5 of 5
   </div>
</div>

DEMO DI LAVORO


1
Chiamarli col-*-15potrebbe essere fonte di confusione. Sembra implicare che facciano parte di un sistema a griglia a 15 colonne, che non lo sono.
Paul D. Waite,

2
@ PaulD.Waite - Ho aggiunto una piccola nota alla mia risposta per far sapere alla gente.
Fizzix,

2
col-*-15va bene con me, ma col-*-5thspotrebbe essere un nome di colonna leggermente meno confuso. Questo è quello che sto usando in modo che i miei altri sviluppatori non vengano da me confusi.
Mordred,

3
Hey @scragar - Se visualizzi lo stile per tutte le classi di colonne correnti di Bootstrap, noterai che contengono tutte position:relative; min-height: 1px; padding-right: 15px; padding-left: 15px;. Fondamentalmente, il codice che ho pubblicato si sta solo estendendo su questo in modo che corrispondano ESATTAMENTE allo stile integrato di Bootstrap. Applico quindi una larghezza di 20%modo che 5 colonne uguali possano adattarsi alla pagina. Molto semplice :)
Fizzix,

1
che ne dici di nominare per la colonna 2/5? Oppure dovremmo usare: col-md-1ths per 1/5 e col-md-2ths per 2/5, col-md-5ths per 5/5 = full width?
Alex,

166

Per Bootstrap 3 , se si desidera che tutta larghezza e si utilizza LESS, SASSo qualcosa di simile, tutto quello che dovete fare è fare uso di funzioni mixin di Bootstrap make-md-column , make-sm-columnecc

DI MENO:

.col-lg-2-4{
  .make-lg-column(2.4)
}
.col-md-2-4{
  .make-md-column(2.4)
}
.col-sm-2-4{
  .make-sm-column(2.4)
}

SASS:

.col-lg-2-4{
  @include make-lg-column(2.4)
}
.col-md-2-4{
  @include make-md-column(2.4)
}
.col-sm-2-4{
  @include make-sm-column(2.4)
}

Non solo è possibile costruire veri e propri corsi di colonna bootstrap a tutta larghezza che utilizzano questi mixins, ma è anche possibile costruire tutti i relativi classi di supporto come .col-md-push-*, .col-md-pull-*, e .col-md-offset-*:

DI MENO:

.col-md-push-2-4{
  .make-md-column-push(2.4)
}
.col-md-pull-2-4{
  .make-md-column-pull(2.4)
}
.col-md-offset-2-4{
  .make-md-column-offset(2.4)
}

SASS:

.col-md-push-2-4{
  @include make-md-column-push(2.4)
}
.col-md-pull-2-4{
  @include make-md-column-pull(2.4)
}
.col-md-offset-2-4{
  @include make-md-column-offset(2.4)
}

Altre risposte parlano di un'impostazione @gridColumnsperfettamente valida, ma che modifica la larghezza della colonna principale per tutto il bootstrap. L'uso delle funzioni di mixin sopra aggiungerà un layout a 5 colonne sopra le colonne bootstrap predefinite, quindi non romperà alcuno strumento di terze parti o stile esistente.


5
La soluzione più pulita, come il 2.45 ° di 12 ( 2.4*5=12), funziona per Bootstrap 3 in una griglia di 12 colonne. Si applica anche a make-xs, make-smma non funzionerà in combinazione con altre definizioni standard col (ultima priorità
ottenuta

6
Sono scioccato dai voti relativamente pochi per questa risposta. È di gran lunga il meno complicato, usando non solo la stessa convenzione di denominazione delle altre classi di colonne Bootstrap, ma anche gli stessi mixin che Bootstrap usa per creare le proprie colonne, rendendolo probabilmente a prova di futuro fino a Bootstrap 4, almeno.
Chris Fritz,

3
Questa dovrebbe essere la migliore risposta. Ho creato una libreria (per includere offset, pulle push) sulla base di questo per il mio uso. Sentiti libero di dare un'occhiata
Kenny Ki,

1
Come tutti hanno detto, sì, questa è ora la risposta corretta. @Sherbrow ha detto che "non funzionerà in combinazione con altre definizioni standard di col" ma questo non è perché questa soluzione è in qualche modo sbagliata, è semplicemente perché 12% 5! = 0.
Nick M

2
@ lightswitch05 Purtroppo non era adatto a me dato che avevo una quantità dinamica di colonne. Se avessi solo una colonna, volevo comunque che fosse un quinto dello schermo, ma usando la risposta di Fizzix una singola colonna avrebbe coperto l'intero schermo. Sono riuscito a risolverlo usando le nuove funzioni di mixin Bootstrap 4. Potrei aggiornare la tua risposta per includerla se ti va?
Plog

40

Aggiornamento 2019

Bootstrap 4.1+

Ecco 5 colonne uguali a larghezza intera ( senza CSS o SASS extra ) utilizzando la griglia di layout automatico :

<div class="container-fluid">
    <div class="row">
        <div class="col">1</div>
        <div class="col">2</div>
        <div class="col">3</div>
        <div class="col">4</div>
        <div class="col">5</div>
    </div>
</div>

http://www.codeply.com/go/MJTglTsq9h

Questa soluzione funziona perché Bootstrap 4 è ora flexbox. Puoi ottenere le 5 colonne da avvolgere all'interno della stessa .rowusando un'interruzione come <div class="col-12"></div>o <div class="w-100"></div>ogni 5 colonne.

Vedi anche: Bootstrap - layout a 5 colonne


2
Non vedo l'ora che sia stabile :)
nicolallias

2
Buono ma funziona solo con file di 5 elementi. Se ottieni di più, ti sbagli. Guarda il mio violino violento
djibe

Ecco perché ho spiegato che devi usare l'interruzione ogni 5 colonne. La tua soluzione funziona ma richiede CSS extra.
Zim,

Considera anche di aggiungere flex-nowrapa .rowpoiché le colonne (automatiche) potrebbero superare la larghezza padre.
Luuk Skeur,

31

Di seguito una combinazione di risposte di @machineaddict e @Mafnah, riscritte per Bootstrap 3 (funzionando bene per me finora):

@media (min-width: 768px){
    .fivecolumns .col-md-2, .fivecolumns .col-sm-2, .fivecolumns .col-lg-2  {
        width: 20%;
        *width: 20%;
    }
}
@media (min-width: 1200px) {
    .fivecolumns .col-md-2, .fivecolumns .col-sm-2, .fivecolumns .col-lg-2 {
        width: 20%;
        *width: 20%;
    }
}
@media (min-width: 768px) and (max-width: 979px) {
    .fivecolumns .col-md-2, .fivecolumns .col-sm-2, .fivecolumns .col-lg-2 {
        width: 20%;
        *width: 20%;
    }
}

Dove lo posiziono e come lo uso?
sergserg,

1
@Serg 1. Posizionalo sotto / dopo il file css Bootstrap 2. Aggiungi la classe .fivecolumns al .row, quindi annida cinque colonne con la classe .col [, - sm, -lg] -2
plaidcorp

In alcuni casi non va perfettamente a tutta larghezza.
Fizzix,

Perché col-xs-2 non viene aggiunto alle dichiarazioni?
Ganders

@ganders solo una visione d'insieme; controllare un'altra risposta in questa pagina: stackoverflow.com/questions/10387740/...
plaidcorp

27

Conservare il bootstrap originale con 12 colonne, non personalizzarlo. L'unica modifica che è necessario apportare è alcuni CSS dopo il CSS reattivo bootstrap originale, in questo modo:

Il seguente codice è stato testato per Bootstrap 2.3.2:

<style type="text/css">
/* start of modification for 5 columns */
@media (min-width: 768px){
    .fivecolumns .span2 {
        width: 18.297872340425532%;
        *width: 18.2234042553191494%;
    }
}
@media (min-width: 1200px) {
    .fivecolumns .span2 {
        width: 17.9487179487179488%;
        *width: 17.87424986361156592%;
    }
}
@media (min-width: 768px) and (max-width: 979px) {
    .fivecolumns .span2 {
        width: 17.79005524861878448%;
        *width: 17.7155871635124022%;
    }
}
/* end of modification for 5 columns */
</style>

E l'html:

<div class="row-fluid fivecolumns">
    <div class="span2">
        <h2>Heading</h2>
        <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
        <p><a class="btn" href="#">View details &raquo;</a></p>
    </div>
    <div class="span2">
        <h2>Heading</h2>
        <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
        <p><a class="btn" href="#">View details &raquo;</a></p>
    </div>
    <div class="span2">
        <h2>Heading</h2>
        <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
        <p><a class="btn" href="#">View details &raquo;</a></p>
    </div>
    <div class="span2">
        <h2>Heading</h2>
        <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
        <p><a class="btn" href="#">View details &raquo;</a></p>
    </div>
    <div class="span2">
        <h2>Heading</h2>
        <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
        <p><a class="btn" href="#">View details &raquo;</a></p>
    </div>
</div>

Nota: anche se lo span2 volte 5 non è uguale a 12 colonne, ottieni l'idea :)

Un esempio funzionante può essere trovato qui http://jsfiddle.net/v3Uy5/6/


10

Nel caso in cui non è necessario l' esatto stessa larghezza delle colonne si può provare a creare a 5 colonne utilizzando nidificazione:

<div class="container">
    <div class="row">
        <div class="col-xs-5">
            <div class="row">
                <div class="col-xs-6 column">Column 1</div>
                <div class="col-xs-6 column">Column 2</div>
            </div>
        </div>
        <div class="col-xs-7">
            <div class="row">
                <div class="col-xs-4 column">Column 3</div>
                <div class="col-xs-4 column">Column 4</div>
                <div class="col-xs-4 column">Column 5</div>
            </div>
        </div>
    </div>
</div>

jsfiddle

Le prime due colonne avranno una larghezza uguale a 5/12 * 1/2 ~ 20,83%

Le ultime tre colonne: 7/12 * 1/3 ~ 19,44%

Tale hack dà il risultato accettabile in molti casi e non richiede alcuna modifica CSS (stiamo usando solo le classi native bootstrap).


9

Crea un download Bootstrap personalizzato per il layout a 5 colonne

Vai alla pagina di personalizzazione di Bootstrap 2.3.2 (o Bootstrap 3 ) e imposta le seguenti variabili (non inserire punti e virgola):

@gridColumns:           5;
@gridColumnWidth:       172px;
@gridColumnWidth1200:   210px;
@gridColumnWidth768:    128px;
@gridGutterWidth768:    21px;

Scarica la tua build. Questa griglia si adatterebbe ai contenitori predefiniti, preservando (quasi) le larghezze predefinite della grondaia.

Nota: se si utilizza MENO, aggiornare variables.lessinvece.


7

Con flexbox http://output.jsbin.com/juziwu

.flexrow {
  display: flex;
  background: lightgray; /*for debug*/
}
.flexrow > * {
  flex: 1;
  margin: 1em;
  outline: auto green;
}
<div class="flexrow">
  <div>...</div>
  <div>...</div>
  <div>...</div>
  <div>...<br>..</div>
  <div>...</div>
</div>


flexbox è meglio di bootstrap se soddisfa le tue esigenze.
ml242,

6

Ho votato a favore della risposta di Mafnah ma guardando di nuovo questo suggerirei che quanto segue è meglio se si mantengono i margini predefiniti ecc.

<div class="equal row-fluid">
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
</div>

.equal .span2 {
    width: 17.9%;
}

1
La larghezza effettiva è del 17,94872% e non è reattiva, dovrai impostare un nuovo margine per ogni colonna in tutte le query @media.
machineaddict

5
<div class="equal row-fluid">
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
    <div class="span2"></div>
</div>

.equal .span2 {
    width: 20%;
}

1
dovrebbe essere .equal .span2 {larghezza: 20%; }
Studio4,

... e NON funziona. ogni colonna, tranne la prima, ha il margine rimasto.
machineaddict,

5

Crea 5 elementi con la classe col-sm-2 e aggiungi al primo elemento anche la classe col-sm-offset-1

Ps questo non sarà a tutta larghezza (sarà rientrato un po 'dalla destra e dalla sinistra dello schermo)

Il codice dovrebbe assomigliare a questo

<div class="col-sm-2 col-sm-offset-1"></div>
<div class="col-sm-2"></div>
<div class="col-sm-2"></div>
<div class="col-sm-2"></div>
<div class="col-sm-2"></div>

5

Bootstrap 4, numero variabile di colonne per riga

Se vuoi avere fino a cinque colonne per riga, in modo che un numero inferiore di colonne occupi ancora solo 1/5 della riga ciascuna, la soluzione è utilizzare i mixin di Bootstrap 4 :

SCSS:

.col-2-4 {
    @include make-col-ready(); // apply standard column margins, padding, etc.
    @include make-col(2.4); // 12/5 = 2.4
}
.col-sm-2-4 {
    @include make-col-ready();
    @include media-breakpoint-up(sm) {
        @include make-col(2.4);
    }
}
.col-md-2-4 {
    @include make-col-ready();
    @include media-breakpoint-up(md) {
        @include make-col(2.4);
    }
}
.col-lg-2-4 {
    @include make-col-ready();
    @include media-breakpoint-up(lg) {
        @include make-col(2.4);
    }
}
.col-xl-2-4 {
    @include make-col-ready();
    @include media-breakpoint-up(xl) {
        @include make-col(2.4);
    }
}

HTML:

<div class="container">    
  <div class="row">
    <div class="col-12 col-sm-2-4">1 of 5</div>
    <div class="col-12 col-sm-2-4">2 of 5</div>
    <div class="col-12 col-sm-2-4">3 of 5</div>
    <div class="col-12 col-sm-2-4">4 of 5</div>
    <div class="col-12 col-sm-2-4">5 of 5</div>
  </div>
  <div class="row">
    <div class="col-12 col-sm-2-4">1 of 2</div> <!-- same width as column "1 of 5" above -->
    <div class="col-12 col-sm-2-4">2 of 2</div> <!-- same width as column "2 of 5" above -->
  </div>
</div>

4

Un altro modo per abilitare 5 colonne in Bootstrap 3 è modificare il formato a 12 colonne usato di default da Bootstrap. Quindi crea una griglia di 20 colonne (usa personalizza sul sito Web Bootstrap O usa la versione LESS / SASS).

Per personalizzare sul sito Web bootstrap, vai alla pagina Personalizza e scarica , aggiorna la variabile @grid-columnsda 12a 20. Quindi sarai in grado di creare 4 e 5 colonne.


3

Può essere fatto con annidamento e utilizzo di un piccolo over-ride CSS.

<div class="col-sm-12">
<div class="row">
  <div class="col-sm-7 five-three">
    <div class="row">
      <div class="col-sm-4">
      Column 1
      </div>
      <div class="col-sm-4">
      Column 2
      </div>
      <div class="col-sm-4">
      Column 3
      </div><!-- end inner row -->
    </div>
  </div>
  <div class="col-sm-5 five-two">
    <div class="row">
      <div class="col-sm-6">
        Col 4
      </div>
      <div class="col-sm-6">
      Col 5
      </div>
    </div><!-- end inner row -->
  </div>
</div><!-- end outer row -->

Quindi alcuni css

@media  (min-width: 768px) {
div.col-sm-7.five-three {
width: 60% !important;
}

div.col-sm-5.five-two {
width: 40% !important;
}

}

Ecco un esempio: 5 esempio di colonna uguale

Ed ecco il mio articolo completo su coderwall

Cinque colonne uguali nel bootstrap 3


3

Secondo me è meglio usarlo in questo modo con meno sintassi. Questa risposta si basa sul risposta di @fizzix

In questo modo le colonne utilizzano le variabili (@ grid-gutter-width, media breakpoint) che l'utente può avere scavalcato e il comportamento di cinque colonne corrisponde al comportamento della griglia di 12 colonne.

/*
 * Special grid for ten columns, 
 * using its own scope 
 * so it does not interfere with the rest of the code
 */

& {
    @import (multiple) "../bootstrap-3.2.0/less/variables.less";
    @grid-columns: 5;
    @import  (multiple) "../bootstrap-3.2.0/less/mixins.less";

    @column: 1;
    .col-xs-5ths {
        .make-xs-column(@column);
    }

    .col-sm-5ths {
        .make-sm-column(@column);
    }

    .col-md-5ths {
        .make-md-column(@column);
    }

    .col-lg-5ths {
        .make-lg-column(@column);
    }
}

/***************************************/
/* Using default bootstrap now
/***************************************/

@import  (multiple) "../bootstrap-3.2.0/less/variables.less";
@import  (multiple) "../bootstrap-3.2.0/less/mixins.less";

/* ... your normal less definitions */


3

Per impostazione predefinita Bootstrap non fornisce un sistema a griglia che ci consente di creare un layout a cinque colonne, è necessario creare una definizione di colonna predefinita nel modo in cui Bootstrap crea alcune classi personalizzate e query multimediali nel file CSS

.col-xs-15,
.col-sm-15,
.col-md-15,
.col-lg-15 {
    position: relative;
    min-height: 1px;
    padding-right: 10px;
    padding-left: 10px;
}
.col-xs-15 {
    width: 20%;
    float: left;
}
@media (min-width: 768px) {
.col-sm-15 {
        width: 20%;
        float: left;
    }
}
@media (min-width: 992px) {
    .col-md-15 {
        width: 20%;
        float: left;
    }
}
@media (min-width: 1200px) {
    .col-lg-15 {
        width: 20%;
        float: left;
    }
}

e un po 'di codice HTML

<div class="row">
    <div class="col-md-15 col-sm-3">
    ...
    </div>
</div>

3

Bootstrap per impostazione predefinita può ridimensionare fino a 12 colonne? Ciò significa che se vogliamo creare un layout a 12 colonne di uguale larghezza, scriveremmo dodici volte div class = "col-md-1".

<div class="row">
<div class="col-md-1"></div>    
<div class="col-md-2">1</div>
<div class="col-md-2">2</div>
<div class="col-md-2">3</div>
<div class="col-md-2">4</div>
<div class="col-md-2">5</div>
<div class="col-md-1"></div>
</div>

3

Layout a 5 colonne con stile Bootstrap di Twitter

.col-xs-15 {
    position: relative;
    min-height: 1px;
    padding-right: 10px;
    padding-left: 10px;
}

.col-xs-15 {
    width: 100%;
    float: left;
}
@media (min-width: 768px) {
.col-xs-15 {
        width: 50%;
        float: left;
    }
}
@media (min-width: 992px) {
    .col-xs-15 {
        width: 20%;
        float: left;
    }
}
@media (min-width: 1200px) {
    .col-xs-15 {
        width: 20%;
        float: left;
    }
}

3

Una soluzione che non richiede molto CSS, né la modifica del layout predefinito 12col bootstrap:

http://jsfiddle.net/0ufdyeur/1/

HTML:

<div class="stretch">
  <div class="col-lg-2"></div>
  <div class="col-lg-2"></div>
  <div class="col-lg-2"></div>
  <div class="col-lg-2"></div>
  <div class="col-lg-2"></div>
</div>

CSS:

@media (min-width: 1200px) { /*if not lg, change this criteria*/
  .stretch{
    width: 120%; /*the actual trick*/
  }
}

3

Basta creare una nuova classe e definirne il comportamento per ogni media query secondo necessità

@media(min-width: 768px){
  .col-1-5{
    width: 20%;
    float: left;
    position: relative;
    min-height: 1px;
    padding-right: 5px;
    padding-left: 5px;
  }
}

<div class="container-fluid">
  <div class="row">
    <div class="col-1-5">col 1</div>
    <div class="col-1-5">col 2</div>
    <div class="col-1-5">col 3</div>
    <div class="col-1-5">col 4</div>
    <div class="col-1-5">col 5</div>
  </div>
</div>

ecco una demo funzionante https://codepen.io/giorgosk/pen/BRVorW


2

In bootstrap 3, penso che possiamo fare qualcosa del genere, per rimuovere il margine sinistro e destro:

<div class="row this_row">
    <div class="col-md-2 col-md-offset-1"></div>
    <div class="col-md-2"></div>
    <div class="col-md-2"></div>
    <div class="col-md-2"></div>
    <div class="col-md-2"></div>
</div>

e CSS

.this_row {
    margin: 0 -5%;
}

2

Come è possibile aggiungere una griglia a 5 colonne nel bootstrap

.col-lg-1-5,.col-md-1-5,.col-sm-1-5,.col-xs-1-5{min-height:1px;padding-left:15px;padding-right:15px;position:relative; width:100%;box-sizing:border-box;}
.item{width:100%;height:100px; background-color:#cfcfcf;}
.col-xs-1-5{width: 20%;float:left;} }

@media (min-width: 767px){ .col-sm-1-5{width: 20%;float:left;} }
@media (min-width: 992px){ .col-md-1-5{width: 20%;float:left;} }
@media (min-width: 1200px){ .col-lg-1-5{width: 20%;float:left;} }
<div class="row">
  <div class="col-sm-1-5">
    <div class="item">Item 1</div>
  </div>
  <div class="col-sm-1-5">
    <div class="item">Item 2</div>
  </div>
  <div class="col-sm-1-5">
    <div class="item">Item 3</div>
  </div>
  <div class="col-sm-1-5">
    <div class="item">Item 4</div>
  </div>
  <div class="col-sm-1-5">
    <div class="item">Item 5</div>
  </div>
</div>


2

la soluzione più semplice senza la necessità di modificare i CSS sarebbe:

<div class="row">
  <div class="btn-group btn-group-justified">
    <div class="btn-group">
      <div class="col-sm-12">Column 1</div>
    </div>
    <div class="btn-group">
      <div class="col-sm-12">Column 2</div>
    </div>
    <div class="btn-group">
      <div class="col-sm-12">Column 3</div>
    </div>
    <div class="btn-group">
      <div class="col-sm-12">Column 4</div>
    </div>
    <div class="btn-group">
      <div class="col-sm-12">Column 5</div>
    </div>
  </div>
</div>

E se hai bisogno che superino qualsiasi punto di interruzione, crea un blocco btn-group. Spero che questo aiuti qualcuno.


2

Cinque colonne chiaramente non fanno parte del bootstrap in base alla progettazione.

Ma con Bootstrap v4 (alfa), ci sono 2 cose che possono aiutare con un layout di griglia complicato

  1. Flex ( http://v4-alpha.getbootstrap.com/getting-started/flexbox/ ), il nuovo tipo di elemento (ufficiale - https://www.w3.org/TR/css-flexbox-1/ )
  2. Utilità reattive ( http://v4-alpha.getbootstrap.com/layout/responsive-utilities/ )

In parole povere, sto usando

<style>
.flexc { display: flex; align-items: center; padding: 0; justify-content: center; }
.flexc a { display: block; flex: auto; text-align: center; flex-basis: 0; }
</style>
<div class="container flexc hidden-sm-down">
  <!-- content to show in MD and larger viewport -->
  <a href="#">Link/Col 1</a>
  <a href="#">Link/Col 2</a>
  <a href="#">Link/Col 3</a>
  <a href="#">Link/Col 4</a>
  <a href="#">Link/Col 5</a>
</div>
<div class="container hidden-md-up">
  <!-- content to show in SM and smaller viewport, I don't think 5 cols in smaller viewport are gonna be alright :) -->
</div>

Che si tratti di 5,7,9,11,13 o qualcosa del genere, andrà bene. Sono abbastanza sicuro che lo standard a 12 griglie è in grado di servire oltre il 90% del caso d'uso - quindi progettiamo in questo modo - anche lo sviluppo più facile!

Il simpatico tutorial flessibile è qui " https://css-tricks.com/snippets/css/a-guide-to-flexbox/ "


2

Ho creato definizioni di mixin SASS basate su definizioni bootstrap per qualsiasi numero di colonne (personalmente accanto a 12 utilizzo 8, 10 e 24):

// Extended bootstrap grid system
//
// Framework grid generation
//
// Based on Bootstrap 'bootstrap/_grid-framework.scss'. Generates classes in form of `.col-(size)-x-num` of width x/num.

@mixin make-extended-grid-columns($num-columns, $i: 1, $list: ".col-xs-#{$i}-#{$num-columns}, .col-sm-#{$i}-#{$num-columns}, .col-md-#{$i}-#{$num-columns}, .col-lg-#{$i}-#{$num-columns}") {
    @for $i from (1 + 1) through $num-columns {
        $list: "#{$list}, .col-xs-#{$i}-#{$num-columns}, .col-sm-#{$i}-#{$num-columns}, .col-md-#{$i}-#{$num-columns}, .col-lg-#{$i}-#{$num-columns}";
    }
    #{$list} {
        position: relative;
        min-height: 1px;
        padding-left:  ($grid-gutter-width / 2);
        padding-right: ($grid-gutter-width / 2);
    }
}


@mixin float-extended-grid-columns($class, $num-columns, $i: 1, $list: ".col-#{$class}-#{$i}-#{$num-columns}") {
    @for $i from (1 + 1) through $num-columns {
        $list: "#{$list}, .col-#{$class}-#{$i}-#{$num-columns}";
    }
    #{$list} {
        float: left;
    }
}


@mixin calc-extended-grid-column($index, $num-columns, $class, $type) {
    @if ($type == width) and ($index > 0) {
        .col-#{$class}-#{$index}-#{$num-columns} {
            width: percentage(($index / $num-columns));
        }
    }
    @if ($type == push) and ($index > 0) {
        .col-#{$class}-push-#{$index}-#{$num-columns} {
            left: percentage(($index / $num-columns));
        }
    }
    @if ($type == pull) and ($index > 0) {
        .col-#{$class}-pull-#{$index}-#{$num-columns} {
            right: percentage(($index / $num-columns));
        }
    }
    @if ($type == offset) and ($index > 0) {
        .col-#{$class}-offset-#{$index}-#{$num-columns} {
            margin-left: percentage(($index / $num-columns));
        }
    }
}

@mixin loop-extended-grid-columns($num-columns, $class, $type) {
    @for $i from 1 through $num-columns - 1 {
        @include calc-extended-grid-column($i, $num-columns, $class, $type);
    }
}

@mixin make-extended-grid($class, $num-columns) {
    @include float-extended-grid-columns($class, $num-columns);
    @include loop-extended-grid-columns($num-columns, $class, width);
    @include loop-extended-grid-columns($num-columns, $class, pull);
    @include loop-extended-grid-columns($num-columns, $class, push);
    @include loop-extended-grid-columns($num-columns, $class, offset);
}

E puoi semplicemente creare classi:

$possible-number-extended-grid-columns: 8, 10, 24;

@each $num-columns in $possible-number-extended-grid-columns {

  // Columns

  @include make-extended-grid-columns($num-columns);

  // Extra small grid

  @include make-extended-grid(xs, $num-columns);

  // Small grid

  @media (min-width: $screen-sm-min) {
    @include make-extended-grid(sm, $num-columns);
  }

  // Medium grid

  @media (min-width: $screen-md-min) {
    @include make-extended-grid(md, $num-columns);
  }

  // Large grid

  @media (min-width: $screen-lg-min) {
    @include make-extended-grid(lg, $num-columns);
  }

}

Spero che qualcuno lo troverà utile


2

Qualcuno usa bootstrap-sass (v3), ecco un semplice codice per 5 colonne usando i mix di bootstrap:

  .col-xs-5ths {
     @include make-xs-column(2.4);
  }

  @media (min-width: $screen-sm-min) {
     .col-sm-5ths {
        @include make-sm-column(2.4);
     }
  }

  @media (min-width: $screen-md-min) {
     .col-md-5ths {
        @include make-md-column(2.4);
     }
  }

  @media (min-width: $screen-lg-min) {
     .col-lg-5ths {
        @include make-lg-column(2.4);
     }
  }

Assicurati di aver incluso:

@import "bootstrap/variables";
@import "bootstrap/mixins";

1
grazie, questo era quello che stavo cercando, ho fatto 1-5th 2-5th ecc. e anche 3-10th ecc. anche adesso, per avere più flessibilità, molto conveniente
morksinaanab,

2

Per Bootstrap 4.4+

Usa le nuove row-cols-nclassi.

  1. Aggiungi row-cols-5classe al tuo.row div. Nessun CSS personalizzato necessario.
  2. Vedi il documento 4.4 qui per i campi di riga: https://getbootstrap.com/docs/4.4/layout/grid/#row-columns

Per le versioni di Bootstrap 4 precedenti a Bootstrap 4.4

  1. Copia CSS di seguito (fantastico CSS degli autori Bootstrap) e aggiungilo al tuo progetto

  2. Leggi i documenti sopra citati per usarlo correttamente.

    .row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}@media (min-width:576px){.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}}@media (min-width:768px){.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}}@media (min-width:992px){.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}}@media (min-width:1200px){.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}}


1

.col-xs-2-4 {
  position: relative;
  float: left;
  width: 20%;
  min-height: 1px;
  padding-left: 15px;
  padding-right: 15px;
}
.col-sm-2-4 {
  position: relative;
  min-height: 1px;
  padding-left: 15px;
  padding-right: 15px;
}
@media (min-width: 768px) {
  .col-sm-2-4 {
    float: left;
    width: 20%;
  }
}
.col-md-2-4 {
  position: relative;
  min-height: 1px;
  padding-left: 15px;
  padding-right: 15px;
}
@media (min-width: 992px) {
  .col-md-2-4 {
    float: left;
    width: 20%;
  }
}
.col-lg-2-4 {
  position: relative;
  min-height: 1px;
  padding-left: 15px;
  padding-right: 15px;
}
@media (min-width: 1200px) {
  .col-lg-2-4 {
    float: left;
    width: 20%;
  }
}

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.