Vue Bootstrap Grid examples

Vue Grid examples - Bootstrap 4 & Material Design

Note: We are transitioning MDB4 to a legacy version and focusing on developing MDB5. While we'll continue to support for the transition period, we encourage you to migrate to MDB5. We're offering a 50% discount on MDB5 PRO to help with your transition, enabling you to leverage the full potential of the latest version. You can find more information here.
get 50% discount on MDB5 PRO

Basic grid layouts to get you familiar with building within the Bootstrap grid system.


Five grid tiers

There are five tiers to the Bootstrap grid system, one for each range of devices we support. Each tier starts at a minimum viewport size and automatically applies to the larger devices unless overridden.

col="4"
col="4"
col="4"
sm="4"
sm="4"
sm="4"
md="4"
md="4"
md="4"
lg="4"
lg="4"
lg="4"
xl="4"
xl="4"
xl="4"
        
            
        <template>
          <mdb-container>
            <mdb-row>
              <mdb-col col="4">col="4"</mdb-col>
              <mdb-col col="4">col="4"</mdb-col>
              <mdb-col col="4">col="4"</mdb-col>
            </mdb-row>
            <mdb-row>
              <mdb-col sm="4">sm="4"</mdb-col>
              <mdb-col sm="4">sm="4"</mdb-col>
              <mdb-col sm="4">sm="4"</mdb-col>
            </mdb-row>
            <mdb-row>
              <mdb-col md="4">md="4"</mdb-col>
              <mdb-col md="4">md="4"</mdb-col>
              <mdb-col md="4">md="4"</mdb-col>
            </mdb-row>
            <mdb-row>
              <mdb-col lg="4">lg="4"</mdb-col>
              <mdb-col lg="4">lg="4"</mdb-col>
              <mdb-col lg="4">lg="4"</mdb-col>
            </mdb-row>
            <mdb-row>
              <mdb-col xl="4">xl="4"</mdb-col>
              <mdb-col xl="4">xl="4"</mdb-col>
              <mdb-col xl="4">xl="4"</mdb-col>
            </mdb-row>
          </mdb-container>
        </template>
        
        
    
        
            
        <script>
          import {mdbContainer, mdbRow, mdbCol} from 'mdbvue';
          export default {
            components: {
              mdbContainer,
              mdbRow,
              mdbCol
            }
          }
        </script>
  
        
    

Three equal columns

Get three equal-width columns starting at desktops and scaling to large desktops. On mobile devices, tablets and below, the columns will automatically stack.

md="4"
md="4"
md="4"
        
            
        <template>
          <mdb-container>
            <mdb-row>
              <mdb-col md="4">md="4"</mdb-col>
              <mdb-col md="4">md="4"</mdb-col>
              <mdb-col md="4">md="4"</mdb-col>
            </mdb-row>
          </mdb-container>
        </template>
      
        
    
        
            
        <script>
          import {mdbContainer, mdbRow, mdbCol} from 'mdbvue';
          export default {
            components: {
              mdbContainer,
              mdbRow,
              mdbCol
            }
          }
        </script>
  
        
    

Three unequal columns

Get three columns starting at desktops and scaling to large desktops of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.

md="3"
md="6"
md="3"
        
            
        <template>
          <mdb-container>
            <mdb-row>
              <mdb-col md="3">md="3"</mdb-col>
              <mdb-col md="6">md="6"</mdb-col>
              <mdb-col md="3">md="3"</mdb-col>
            </mdb-row>
          </mdb-container>
        </template>
        
        
    
        
            
        <script>
          import {mdbContainer, mdbRow, mdbCol} from 'mdbvue';
          export default {
            components: {
              mdbContainer,
              mdbRow,
              mdbCol
            }
          }
        </script>
    
        
    

Two columns

Get two columns starting at desktops and scaling to large desktops.

md="8"
md="4"
        
            
        <template>
          <mdb-container>
            <mdb-row>
              <mdb-col md="8">md="8"</mdb-col>
              <mdb-col md="4">md="4"</mdb-col>
            </mdb-row>
          </mdb-container>
        </template>
        
        
    
        
            
        <script>
          import {mdbContainer, mdbRow, mdbCol} from 'mdbvue';
          export default {
            components: {
              mdbContainer,
              mdbRow,
              mdbCol
            }
          }
        </script>
    
        
    

Full width, single column

No grid classes are necessary for full-width elements.

Two columns with two nested columns

Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns starting at desktops and scaling to large desktops, with another two (equal widths) within the larger column.

At mobile device sizes, tablets and down, these columns and their nested columns will stack.
md="8"
md="6"
md="6"
md="4"
        
            
        <template>
          <mdb-container>
            <mdb-row>
              <mdb-col md="8">
                md="8"
                <mdb-row>
                  <mdb-col md="6">md="6"</mdb-col>
                  <mdb-col md="6">md="6"</mdb-col>
                </mdb-row>
              </mdb-col>
              <mdb-col md="4">md="4"</mdb-col>
            </mdb-row>
          </mdb-container>
        </template>
        
        
    
        
            
        <script>
          import {mdbContainer, mdbRow, mdbCol} from 'mdbvue';
          export default {
            components: {
              mdbContainer,
              mdbRow,
              mdbCol
            }
          }
        </script>
    
        
    

Mixed: mobile and desktop

The Bootstrap v4 grid system has five tiers of classes: xs (extra small), sm (small), md (medium), lg (large), and xl (extra large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.

Each tier of classes scales up, meaning if you plan on setting the same widths for xs and sm, you only need to specify xs.

col="12" md="8"
col="6" md="4"
col="6" md="4"
col="6" md="4"
col="6" md="4"
col="6"
col="6"
        
            
        <template>
          <mdb-container>
            <mdb-row>
              <mdb-col col="12" md="8">col="12" md="8"</mdb-col>
              <mdb-col col="6" md="4">col="6" md="4"</mdb-col>
            </mdb-row>
            <mdb-row>
              <mdb-col col="6" md="4">col="6" md="4"</mdb-col>
              <mdb-col col="6" md="4">col="6" md="4"</mdb-col>
              <mdb-col col="6" md="4">col="6" md="4"</mdb-col>
            </mdb-row>
            <mdb-row>
              <mdb-col col="6">col="6"</mdb-col>
              <mdb-col col="6">col="6"</mdb-col>
            </mdb-row>
          </mdb-container>
        </template>
        
        
    
        
            
        <script>
          import {mdbContainer, mdbRow, mdbCol} from 'mdbvue';
          export default {
            components: {
              mdbContainer,
              mdbRow,
              mdbCol
            }
          }
        </script>
    
        
    

Mixed: mobile, tablet and desktop

col="12" sm="6" lg="8"
col="6" lg="4"
col="6" sm="4"
col="6" sm="4"
col="6" sm="4"
        
            
        <template>
          <mdb-container>
            <mdb-row>
              <mdb-col col="12" sm="6" lg="8">col="12" sm="6" lg="8"</mdb-col>
              <mdb-col col="6" lg="4">col="6" lg="4"</mdb-col>
            </mdb-row>
            <mdb-row>
              <mdb-col col="6" sm="4">col="6" sm="4"</mdb-col>
              <mdb-col col="6" sm="4">col="6" sm="4"</mdb-col>
              <mdb-col col="6" sm="4">col="6" sm="4"</mdb-col>
            </mdb-row>
          </mdb-container>
        </template>
        
        
    
        
            
        <script>
          import {mdbContainer, mdbRow, mdbCol} from 'mdbvue';
          export default {
            components: {
              mdbContainer,
              mdbRow,
              mdbCol
            }
          }
        </script>