Tables

Vue Bootstrap 5 Tables

Tables allow you to aggregate a huge amount of data and present it in a clear and orderly way. MDB tables provide additional benefits like responsiveness and the possibility of manipulating the table styles.

Due to the widespread use of <table> elements across third-party widgets like calendars and date pickers, Bootstrap’s tables are opt-in. Add the base class MDBTable to any <table>, then extend with our optional modifier classes or custom styles. All table styles are not inherited in Bootstrap, meaning any nested tables can be styled independent from the parent.


Basic example

Using the most basic table markup, here’s how MDBTable-based tables look in MDB.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
        <template>
          <MDBTable>
            <thead>
              <tr>
                <th scope="col">#</th>
                <th scope="col">First</th>
                <th scope="col">Last</th>
                <th scope="col">Handle</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <th scope="row">1</th>
                <td>Mark</td>
                <td>Otto</td>
                <td>@mdo</td>
              </tr>
              <tr>
                <th scope="row">2</th>
                <td>Jacob</td>
                <td>Thornton</td>
                <td>@fat</td>
              </tr>
              <tr>
                <th scope="row">3</th>
                <td colspan="2">Larry the Bird</td>
                <td>@twitter</td>
              </tr>
            </tbody>
          </MDBTable>
        </template>
        
        
    
        
            
        <script>
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
          export default {
            components: {
              MDBTable,
            },
          };
        </script>
        
        
    
        
            
        <script setup lang="ts">
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
        </script>
        
        
    

Advanced example

An advanced example of the table with images, badges, buttons, and secondary texts.

Name Title Status Position Actions

John Doe

john.doe@gmail.com

Software engineer

IT department

Active Senior

Alex Ray

alex.ray@gmail.com

Consultant

Finance

Onboarding Junior

Kate Hunington

kate.hunington@gmail.com

Designer

UI/UX

Awaiting Senior
        
            
        <template>
          <MDBTable class="align-middle mb-0 bg-white">
            <thead class="bg-light">
              <tr>
                <th>Name</th>
                <th>Title</th>
                <th>Status</th>
                <th>Position</th>
                <th>Actions</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>
                  <div class="d-flex align-items-center">
                    <img src="https://mdbootstrap.com/img/new/avatars/8.jpg" alt="" style="width: 45px; height: 45px"
                      class="rounded-circle" />
                    <div class="ms-3">
                      <p class="fw-bold mb-1">John Doe</p>
                      <p class="text-muted mb-0">john.doe@gmail.com</p>
                    </div>
                  </div>
                </td>
                <td>
                  <p class="fw-normal mb-1">Software engineer</p>
                  <p class="text-muted mb-0">IT department</p>
                </td>
                <td>
                  <MDBBadge badge="success" pill class="d-inline">Active</MDBBadge>
                </td>
                <td>Senior</td>
                <td>
                  <MDBBtn color="link" size="sm" rounded>
                    Edit
                  </MDBBtn>
                </td>
              </tr>
              <tr>
                <td>
                  <div class="d-flex align-items-center">
                    <img src="https://mdbootstrap.com/img/new/avatars/6.jpg" class="rounded-circle" alt=""
                      style="width: 45px; height: 45px" />
                    <div class="ms-3">
                      <p class="fw-bold mb-1">Alex Ray</p>
                      <p class="text-muted mb-0">alex.ray@gmail.com</p>
                    </div>
                  </div>
                </td>
                <td>
                  <p class="fw-normal mb-1">Consultant</p>
                  <p class="text-muted mb-0">Finance</p>
                </td>
                <td>
                  <MDBBadge badge="primary" pill class="d-inline">Onboarding</MDBBadge>
                </td>
                <td>Junior</td>
                <td>
                  <MDBBtn color="link" size="sm" rounded class="fw-bold" :ripple="{ color: 'dark' }">
                    Edit
                  </MDBBtn>
                </td>
              </tr>
              <tr>
                <td>
                  <div class="d-flex align-items-center">
                    <img src="https://mdbootstrap.com/img/new/avatars/7.jpg" class="rounded-circle" alt=""
                      style="width: 45px; height: 45px" />
                    <div class="ms-3">
                      <p class="fw-bold mb-1">Kate Hunington</p>
                      <p class="text-muted mb-0">kate.hunington@gmail.com</p>
                    </div>
                  </div>
                </td>
                <td>
                  <p class="fw-normal mb-1">Designer</p>
                  <p class="text-muted mb-0">UI/UX</p>
                </td>
                <td>
                  <MDBBadge badge="warning" pill class="d-inline">Awaiting</MDBBadge>
                </td>
                <td>Senior</td>
                <td>
                  <MDBBtn color="link" size="sm" rounded class="fw-bold" :ripple="{ color: 'dark' }">
                    Edit
                  </MDBBtn>
                </td>
              </tr>
            </tbody>
          </MDBTable>
        </template>
        
        
    
        
            
        <script>
          import {
            MDBTable,
            MDBBtn,
            MDBBadge
          } from 'mdb-vue-ui-kit';

          export default {
            components: {
              MDBTable,
              MDBBtn,
              MDBBadge
            },
          };
        </script>
        
        
    
        
            
        <script setup lang="ts">
          import {
            MDBTable,
            MDBBtn,
            MDBBadge
          } from 'mdb-vue-ui-kit';
        </script>
        
        
    

Variants

Use contextual classes to color tables, table rows or individual cells.

Class Heading Heading
Default Cell Cell
Primary Cell Cell
Secondary Cell Cell
Success Cell Cell
Danger Cell Cell
Warning Cell Cell
Info Cell Cell
Light Cell Cell
Dark Cell Cell
        
            
        <template>
          <!-- On tables -->
          <MDBTable variant="primary">...</MDBTable>
          <MDBTable variant="secondary">...</MDBTable>
          <MDBTable variant="success">...</MDBTable>
          <MDBTable variant="danger">...</MDBTable>
          <MDBTable variant="warning">...</MDBTable>
          <MDBTable variant="info">...</MDBTable>
          <MDBTable variant="light">...</MDBTable>
          <MDBTable variant="dark">...</MDBTable>
          <!-- On rows -->
          <tr class="table-primary">
            ...
          </tr>
          <tr class="table-secondary">
            ...
          </tr>
          <tr class="table-success">
            ...
          </tr>
          <tr class="table-danger">
            ...
          </tr>
          <tr class="table-warning">
            ...
          </tr>
          <tr class="table-info">
            ...
          </tr>
          <tr class="table-light">
            ...
          </tr>
          <tr class="table-dark">
            ...
          </tr>
          <!-- On cells (`td` or `th`) -->
          <tr>
            <td class="table-primary">...</td>
            <td class="table-secondary">...</td>
            <td class="table-success">...</td>
            <td class="table-danger">...</td>
            <td class="table-warning">...</td>
            <td class="table-info">...</td>
            <td class="table-light">...</td>
            <td class="table-dark">...</td>
          </tr>
        </template>
        
        
    
        
            
        <script>
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
          export default {
            components: {
              MDBTable,
            },
          };
        </script>
        
        
    
        
            
        <script setup lang="ts">
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
        </script>
        
        
    

Conveying meaning to assistive technologies:
Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .visually-hidden class.


Accented tables

Striped

Use striped prop on MDBTable to add zebra-striping to any table row within the <tbody>.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable striped></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

These classes can also be added to table variants:

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable dark striped></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable variant="success" striped></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Hoverable

Add hover prop to enable a hover state on table rows within a <tbody>.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable hover></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable dark hover></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

These hoverable rows can also be combined with the striped variant:

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable hover striped></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Active tables

Highlight a table row or cell by adding a .table-active class.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable>
              <thead>
                <tr>
                  <th scope="col">#</th>
                  <th scope="col">First</th>
                  <th scope="col">Last</th>
                  <th scope="col">Handle</th>
                </tr>
              </thead>
              <tbody>
                <tr class="table-active">
                  <th scope="row">1</th>
                  <td>Mark</td>
                  <td>Otto</td>
                  <td>@mdo</td>
                </tr>
                <tr>
                  <th scope="row">2</th>
                  <td>Jacob</td>
                  <td>Thornton</td>
                  <td>@fat</td>
                </tr>
                <tr>
                  <th scope="row">3</th>
                  <td colspan="2" class="table-active">Larry the Bird</td>
                  <td>@twitter</td>
                </tr>
              </tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable dark>
              <thead>
                <tr>
                  <th scope="col">#</th>
                  <th scope="col">First</th>
                  <th scope="col">Last</th>
                  <th scope="col">Handle</th>
                </tr>
              </thead>
              <tbody>
                <tr class="table-active">
                  <th scope="row">1</th>
                  <td>Mark</td>
                  <td>Otto</td>
                  <td>@mdo</td>
                </tr>
                <tr>
                  <th scope="row">2</th>
                  <td>Jacob</td>
                  <td>Thornton</td>
                  <td>@fat</td>
                </tr>
                <tr>
                  <th scope="row">3</th>
                  <td colspan="2" class="table-active">Larry the Bird</td>
                  <td>@twitter</td>
                </tr>
              </tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Table borders

Bordered

Add bordered prop for borders on all sides of the table and cells.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable bordered></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Border color utilities can be added to change colors:

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable border="primary"></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Borderless

Add borderless prop for a table without borders.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable borderless></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable dark borderless></MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Small

Add sm prop to make any MDBTable more compact by cutting all cell padding in half.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
        <template>
          <MDBTable sm></MDBTable>
        </template>
        
        
    
        
            
        <script>
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
          export default {
            components: {
              MDBTable,
            },
          };
        </script>
        
        
    
        
            
        <script setup lang="ts">
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
        </script>
        
        
    
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
        <template>
          <MDBTable dark sm></MDBTable>
        </template>
        
        
    
        
            
        <script>
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
          export default {
            components: {
              MDBTable,
            },
          };
        </script>
        
        
    
        
            
        <script setup lang="ts">
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
        </script>
        
        
    

Group dividers

Add a thicker border, darker between table groups—<thead>, <tbody>, and <tfoot>—with .table-group-divider. We customize the color by adding the .table-divider-color class. You can also customize the color on your own by changing the border-top-color (which we don’t currently provide a utility class for at this time).

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable>
              <thead>
                <tr>
                  <th scope="col">#</th>
                  <th scope="col">First</th>
                  <th scope="col">Last</th>
                  <th scope="col">Handle</th>
                </tr>
              </thead>
              <tbody class="table-group-divider table-divider-color">
                <tr>
                  <th scope="row">1</th>
                  <td>Mark</td>
                  <td>Otto</td>
                  <td>@mdo</td>
                </tr>
                <tr>
                  <th scope="row">2</th>
                  <td>Jacob</td>
                  <td>Thornton</td>
                  <td>@fat</td>
                </tr>
                <tr>
                  <th scope="row">3</th>
                  <td colspan="2">Larry the Bird</td>
                  <td>@twitter</td>
                </tr>
              </tbody>
            </MDBTable>
          </template>
        
        
    
        
            
          <script>
            import { MDBTable } from 'mdb-vue-ui-kit';

            export default {
              components: {
                MDBTable,
              },
            };
          </script>
        
        
    
        
            
          <script setup lang="ts">
            import { MDBTable } from 'mdb-vue-ui-kit';
          </script>
        
        
    

Vertical alignment

Table cells of <thead> are always vertical aligned to the bottom. Table cells in <tbody> inherit their alignment from <MDBTable> and are aligned to the the top by default. Use the vertical align classes to re-align where needed.

Heading 1 Heading 2 Heading 3 Heading 4
This cell inherits vertical-align: middle; from the table This cell inherits vertical-align: middle; from the table This cell inherits vertical-align: middle; from the table Nulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
This cell inherits vertical-align: bottom; from the table row This cell inherits vertical-align: bottom; from the table row This cell inherits vertical-align: bottom; from the table row Nulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
This cell inherits vertical-align: middle; from the table This cell inherits vertical-align: middle; from the table This cell is aligned to the top. Nulla vitae elit libero, a pharetra augue. Cras mattis consectetur purus sit amet fermentum. Vestibulum id ligula porta felis euismod semper.
        
            
        <template>
          <MDBTable align="middle" responsive>
            <thead>
              <tr>
                <th scope="col">#</th>
                <th scope="col">First</th>
                <th scope="col">Last</th>
                <th scope="col">Handle</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <th scope="row">1</th>
                <td>Mark</td>
                <td>Otto</td>
                <td>@mdo</td>
              </tr>
              <tr class="align-bottom">
                <th scope="row">2</th>
                <td>Jacob</td>
                <td>Thornton</td>
                <td>@fat</td>
              </tr>
              <tr>
                <th scope="row">3</th>
                <td colspan="2">Larry the Bird</td>
                <td class="align-top">@twitter</td>
              </tr>
            </tbody>
          </MDBTable>
        </template>
        
        
    
        
            
        <script>
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
          export default {
            components: {
              MDBTable,
            },
          };
        </script>
        
        
    
        
            
        <script setup lang="ts">
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
        </script>
        
        
    

Nesting

Border styles, active styles, and table variants are not inherited by nested tables.

# First Last Handle
1 Mark Otto @mdo
Header Header Header
A First Last
B First Last
C First Last
3 Larry the Bird @twitter
        
            
        <template>
          <MDBTable striped border>
            <thead></thead>
            <tbody>
              <tr>
                <td colspan="4">
                  <MDBTable></MDBTable>
                </td>
              </tr>
            </tbody>
          </MDBTable>
        </template>
        
        
    
        
            
        <script>
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
          export default {
            components: {
              MDBTable,
            },
          };
        </script>
        
        
    
        
            
        <script setup lang="ts">
          import {
            MDBTable
          } from 'mdb-vue-ui-kit';
        </script>
        
        
    

How nesting works

To prevent any styles from leaking to nested tables, we use the child combinator (>) selector in our CSS. Since we need to target all the tds and ths in the thead, tbody, and tfoot, our selector would look pretty long without it. As such, we use the rather odd looking .table > :not(caption) > * > * selector to target all tds and ths of the .table, but none of any potential nested tables.

Note that if you add <tr>s as direct children of a table, those <tr> will be wrapped in a <tbody> by default, thus making our selectors work as intended.


Additional examples

A few practical examples of the use of tables with typical components such as buttons, checkboxes or icons.

Buttons

To learn more about buttons read Buttons Docs.

# Lorem Ipsum Dolor
1 Sit Amet
2 Adipisicing Elit
3 Hic Fugiat
        
            
          <template>
            <MDBTable align="middle">
              <thead>
                <tr>
                  <th scope="col">#</th>
                  <th scope="col">Lorem</th>
                  <th scope="col">Ipsum</th>
                  <th scope="col">Dolor</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <th scope="row">1</th>
                  <td>Sit</td>
                  <td>Amet</td>
                  <td>
                    <MDBBtn color="link" size="sm" class="px-3" :ripple="{ color: 'dark' }">
                      <MDBIcon icon="times" />
                    </MDBBtn>
                  </td>
                </tr>
                <tr>
                  <th scope="row">2</th>
                  <td>Adipisicing</td>
                  <td>Elit</td>
                  <td>
                    <MDBBtn color="link" size="sm" class="px-3" :ripple="{ color: 'dark' }">
                      <MDBIcon icon="times" />
                    </MDBBtn>
                  </td>
                </tr>
                <tr>
                  <th scope="row">3</th>
                  <td>Hic</td>
                  <td>Fugiat</td>
                  <td>
                    <MDBBtn color="link" size="sm" class="px-3" :ripple="{ color: 'dark' }">
                      <MDBIcon icon="times" />
                    </MDBBtn>
                  </td>
                </tr>
              </tbody>
            </MDBTable>
            <template />
            
        
    
        
            
            <script>
              import {
                MDBTable,
                MDBBtn
              } from 'mdb-vue-ui-kit';

              export default {
                components: {
                  MDBTable,
                  MDBBtn
                },
              };
            </script>
            
        
    
        
            
            <script setup lang="ts">
              import {
                MDBTable,
                MDBBtn
              } from 'mdb-vue-ui-kit';
            </script>
            
        
    

Checkboxes

To learn more about checkboxes read Checkbox Docs.

Lorem Ipsum Dolor
Sit Amet Consectetur
Adipisicing Elit Sint
Hic Fugiat Temporibus
        
            
          <template>
            <MDBTable>
              <thead>
                <tr>
                  <th scope="col">
                    <MDBCheckbox v-model="checkbox1" />
                  </th>
                  <th scope="col">Lorem</th>
                  <th scope="col">Ipsum</th>
                  <th scope="col">Dolor</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <th scope="row">
                    <MDBCheckbox v-model="checkbox2" />
                  </th>
                  <td>Sit</td>
                  <td>Amet</td>
                  <td>Consectetur</td>
                </tr>
                <tr>
                  <th scope="row">
                    <MDBCheckbox v-model="checkbox3" />
                  </th>
                  <td>Adipisicing</td>
                  <td>Elit</td>
                  <td>Sint</td>
                </tr>
                <tr>
                  <th scope="row">
                    <MDBCheckbox v-model="checkbox4" />
                  </th>
                  <td>Hic</td>
                  <td>Fugiat</td>
                  <td>Temporibus</td>
                </tr>
              </tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              ref
            } from "vue";
            import {
              MDBTable,
              MDBCheckbox
            } from 'mdb-vue-ui-kit';

            export default {
              components: {
                MDBTable,
                MDBCheckbox
              },
              setup() {
                const checkbox1 = ref(false);
                const checkbox2 = ref(false);
                const checkbox3 = ref(false);
                const checkbox4 = ref(false);

                return {
                  checkbox1,
                  checkbox2,
                  checkbox3,
                  checkbox4
                }
              }
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              ref
            } from "vue";
            import {
              MDBTable,
              MDBCheckbox
            } from 'mdb-vue-ui-kit';

            const checkbox1 = ref(false);
            const checkbox2 = ref(false);
            const checkbox3 = ref(false);
            const checkbox4 = ref(false);
          </script>
          
        
    

Icons

To learn more about icons read Icons Docs.

Product Detail Views Unique Purchases Quantity Product Revenue Avg. Price
Value 18,492 228 350 $4,787.64 $13.68
Percentage change -48.8% 14.0% 46.4% 29.6% -11.5%
Absolute change -17,654 28 111 $1,092.72 $-1.78
        
            
          <template>
            <MDBTable hover class="text-nowrap">
              <thead>
                <tr>
                  <th scope="col"></th>
                  <th scope="col">Product Detail Views</th>
                  <th scope="col">Unique Purchases</th>
                  <th scope="col">Quantity</th>
                  <th scope="col">Product Revenue</th>
                  <th scope="col">Avg. Price</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <th scope="row">Value</th>
                  <td>18,492</td>
                  <td>228</td>
                  <td>350</td>
                  <td>$4,787.64</td>
                  <td>$13.68</td>
                </tr>
                <tr>
                  <th scope="row">Percentage change</th>
                  <td>
                    <span class="text-danger">
                      <i MDBIcon icon="caret-down" class="me-1" /><span
                        >-48.8%</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-success">
                      <MDBIcon icon="caret-up" class="me-1" /><span>14.0%</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-success">
                      <MDBIcon icon="caret-up" class="me-1" /><span>46.4%</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-success">
                      <MDBIcon icon="caret-up" class="me-1" /><span>29.6%</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-danger">
                      <MDBIcon icon="caret-down" class="me-1" /><span
                        >-11.5%</span>
                    </span>
                  </td>
                </tr>
                <tr>
                  <th scope="row">Absolute change</th>
                  <td>
                    <span class="text-danger">
                      <MDBIcon icon="caret-down" class="me-1" /><span
                        >-17,654</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-success">
                      <MDBIcon icon="caret-up" class="me-1" /><span>28</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-success">
                      <MDBIcon icon="caret-up" class="me-1" /><span>111</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-success">
                      <MDBIcon icon="caret-up" class="me-1" /><span
                        >$1,092.72</span>
                    </span>
                  </td>
                  <td>
                    <span class="text-danger">
                      <MDBIcon icon="caret-down" class="me-1" /><span
                        >$-1.78</span>
                    </span>
                  </td>
                </tr>
              </tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable,
              MDBIcon
            } from 'mdb-vue-ui-kit';

            export default {
              components: {
                MDBTable,
                MDBIcon
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable,
              MDBIcon
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Anatomy

Table head

Similar to tables and dark tables, use the modifier classes .table-light or .table-dark to make <thead>s appear light or dark gray.

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable>
              <thead class="table-light"></thead>
              <tbody></tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable>
              <thead class="table-dark"></thead>
              <tbody></tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Table foot

# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
Footer Footer Footer Footer
        
            
          <template>
            <MDBTable>
              <thead></thead>
              <tbody></tbody>
              <tfoot></tfoot>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Captions

A <caption> functions like a heading for a table. It helps users with screen readers to find a table and understand what it’s about and decide if they want to read it.

List of users
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable>
              <caption>
                List of users
              </caption>
              <thead></thead>
              <tbody></tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

You can also put the <caption> on the top of the table with captionTop prop.

List of users
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
        
            
          <template>
            <MDBTable captionTop>
              <caption>
                List of users
              </caption>
              <thead>
                <tr>
                  <th scope="col">#</th>
                  <th scope="col">First</th>
                  <th scope="col">Last</th>
                  <th scope="col">Handle</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <th scope="row">1</th>
                  <td>Mark</td>
                  <td>Otto</td>
                  <td>@mdo</td>
                </tr>
                <tr>
                  <th scope="row">2</th>
                  <td>Jacob</td>
                  <td>Thornton</td>
                  <td>@fat</td>
                </tr>
                <tr>
                  <th scope="row">3</th>
                  <td>Larry</td>
                  <td>the Bird</td>
                  <td>@twitter</td>
                </tr>
              </tbody>
            </MDBTable>
          </template>
          
        
    
        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
            export default {
              components: {
                MDBTable,
              },
            };
          </script>
          
        
    
        
            
          <script setup lang="ts">
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
          
        
    

Responsive tables

Responsive tables allow tables to be scrolled horizontally with ease. Make any table responsive across all viewports by adding a responsive prop tp MDBTable. Or, pick a maximum breakpoint with which to have a responsive table up to by using responsive="{sm|md|lg|xl|xxl}".

Vertical clipping/truncation:
Responsive tables make use of overflow-y: hidden, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.

Always responsive

Across every breakpoint, use responsive for horizontally scrolling tables.

# Heading Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell Cell
        
            
            <template>
              <MDBTable responsive></MDBTable>
            </template>
            
        
    
        
            
            <script>
              import {
                MDBTable
              } from 'mdb-vue-ui-kit';
              export default {
                components: {
                  MDBTable,
                },
              };
            </script>
            
        
    
        
            
            <script setup lang="ts">
              import {
                MDBTable
              } from 'mdb-vue-ui-kit';
            </script>
            
        
    

Breakpoint specific

Use responsive="{sm|md|lg|xl|xxl}" as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally.

These tables may appear broken until their responsive styles apply at specific viewport widths.

# Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell
# Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell
# Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell
# Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell
# Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell
# Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell
        
            
            <template>
              <MDBTable responsive></MDBTable>
              <MDBTable responsive="sm"></MDBTable>
              <MDBTable responsive="md"></MDBTable>
              <MDBTable responsive="lg"></MDBTable>
              <MDBTable responsive="xl"></MDBTable>
              <MDBTable responsive="xxl"></MDBTable>
            </template>
            
        
    
        
            
            <script>
              import {
                MDBTable
              } from 'mdb-vue-ui-kit';
              export default {
                components: {
                  MDBTable,
                },
              };
            </script>
            
        
    
        
            
            <script setup lang="ts">
              import {
                MDBTable
              } from 'mdb-vue-ui-kit';
            </script>
            
        
    

Customizing in Sass

  • The factor variables ($table-striped-bg-factor, $table-active-bg-factor & $table-hover-bg-factor) are used to determine the contrast in table variants.
  • Apart from the light & dark table variants, theme colors are lightened by the $table-bg-level variable.
        
            
          $table-cell-padding-y: .5rem;
          $table-cell-padding-x: .5rem;
          $table-cell-padding-y-sm: .25rem;
          $table-cell-padding-x-sm: .25rem;

          $table-cell-vertical-align: top;

          $table-color: $body-color;
          $table-bg: transparent;

          $table-striped-color: $table-color;
          $table-striped-bg-factor: .05;
          $table-striped-bg: rgba($black, $table-striped-bg-factor);

          $table-active-color: $table-color;
          $table-active-bg-factor: .1;
          $table-active-bg: rgba($black, $table-active-bg-factor);

          $table-hover-color: $table-color;
          $table-hover-bg-factor: .075;
          $table-hover-bg: rgba($black, $table-hover-bg-factor);

          $table-border-factor: .1;
          $table-border-width: $border-width;
          $table-border-color: $border-color;

          $table-striped-order: odd;

          $table-group-seperator-color: currentColor;

          $table-caption-color: $text-muted;

          $table-bg-level: -9;

          $table-variants: (
          "primary": color-level($primary, $table-bg-level),
          "secondary": color-level($secondary, $table-bg-level),
          "success": color-level($success, $table-bg-level),
          "info": color-level($info, $table-bg-level),
          "warning": color-level($warning, $table-bg-level),
          "danger": color-level($danger, $table-bg-level),
          "light": $light,
          "dark": $dark,
          );
          
        
    

Tables - API


Import

        
            
          <script>
            import {
              MDBTable
            } from 'mdb-vue-ui-kit';
          </script>
        
        
    

Properties

Name Type Default Description Example
tag String 'table' Defines tag of the MDBTable element <MDBTable tag="div" />
variant String Sets table background color. Use our color palette <MDBTable variant="primary" />
dark Boolean false Shorthand for setting dark theme for the table <MDBTable dark />
light Boolean false Shorthand for setting light theme for the table <MDBTable light />
border Boolean | String false Adds border on all elements inside the table. Add value to set color of the border <MDBTable border /> <MDBTable border="primary" />
borderless Boolean false Disables border on al elements inside the table. <MDBTable borderless />
striped Boolean false Adds zebra-striping to any table row <MDBTable striped />
hover Boolean false Adds hover state on table rows (rows are marked on light-grey color) <MDBTable hover />
responsive Boolean | String false Adds table wrapper that makes table scrollable horizontally on given breakpoint. When no breakpoint is added it makes table scrollable horizontally when screen width is smaller than table content (under 768px). It make use of overflow-y: hidden which clips off content that goes beyon the bottom or top edge of the table. <MDBTable responsive /> <MDBTable responsive="md" />
align String Sets vertival alignment for table cells. Use {'top', 'middle', 'bottom'}. Top is default. <MDBTable align="middle" />
sm Boolean false Cuts cell's padding by half <MDBTable sm />
captionTop Boolean false Position table caption at the top of the table <MDBTable captionTop />
tableStyle String Sets additional styles for the table <MDBTable :tableStyle="{maxHeight: 200px}" />

CSS variables

As part of MDB’s evolving CSS variables approach, tables now uses local CSS variables on .table for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

        
            
        // .table
        --#{$prefix}table-font-size: #{$table-font-size};
        --#{$prefix}table-divider-color: #{$table-divider-color};

        --#{$prefix}table-color: #{$table-color};
        --#{$prefix}table-bg: #{$table-bg};
        --#{$prefix}table-border-color: #{$table-border-color};
        --#{$prefix}table-accent-bg: #{$table-accent-bg};
        --#{$prefix}table-striped-color: #{$table-striped-color};
        --#{$prefix}table-striped-bg: #{$table-striped-bg};
        --#{$prefix}table-active-color: #{$table-active-color};
        --#{$prefix}table-active-bg: #{$table-active-bg};
        --#{$prefix}table-hover-color: #{$table-hover-color};
        --#{$prefix}table-hover-bg: #{$table-hover-bg};

        // .table-striped
        --#{$prefix}table-accent-bg: var(--#{$variable-prefix}table-striped-bg);

        // .table-active
        --#{$prefix}table-accent-bg: var(--#{$variable-prefix}table-active-bg);

        // .table-hover
        --#{$prefix}table-accent-bg: var(--#{$variable-prefix}table-hover-bg);
        
        
    

SCSS variables

  • The factor variables ($table-striped-bg-factor, $table-active-bg-factor & $table-hover-bg-factor) are used to determine the contrast in table variants.
  • Apart from the light & dark table variants, theme colors are lightened by the $table-bg-level variable.
        
            
        $table-cell-vertical-align: top;
        $table-bg: transparent;
        $table-accent-bg: transparent;
        $table-th-font-weight: null;

        $table-striped-color: $table-color;
        $table-striped-bg-factor: 0.05;
        $table-active-color: $table-color;
        $table-active-bg-factor: 0.1;
        $table-active-bg: rgba($black, $table-active-bg-factor);

        $table-hover-color: $table-color;
        $table-hover-bg-factor: 0.075;
        $table-border-factor: 0.1;
        $table-border-width: $border-width;
        $table-border-color: var(--#{$prefix}border-color);
        $table-striped-order: odd;
        $table-striped-columns-order: even;
        $table-caption-color: $text-muted;

        $table-cell-padding-y: 1rem;
        $table-cell-padding-x: 1.4rem;
        $table-cell-padding-y-sm: 0.5rem;
        $table-cell-padding-x-sm: 0.5rem;

        $table-color: var(--#{$prefix}body-color);
        $table-font-size: 0.9rem;
        $table-striped-bg: rgba(0, 0, 0, 0.02);
        $table-hover-transition: 0.5s;
        $table-hover-bg: rgba(0, 0, 0, 0.025);
        $table-group-separator-color: inherit;
        $table-divider-color: rgba(0, 0, 0, 0.1);
        $table-bg-scale: -80%;

        $table-variants: (
          'primary': shift-color($primary, $table-bg-scale),
          'secondary': shift-color($secondary, $table-bg-scale),
          'success': shift-color($success, $table-bg-scale),
          'info': shift-color($info, $table-bg-scale),
          'warning': shift-color($warning, $table-bg-scale),
          'danger': shift-color($danger, $table-bg-scale),
          'light': $light,
          'dark': $dark,
        );