Categories
Bootstrap HTML

Bootstrap 5 — Table Captions, Figures, and Form Fields

Bootstrap 5 is in alpha when this is written and it’s subject to change.

Bootstrap is a popular UI library for any JavaScript apps.

In this article, we’ll look at how to style tables, figures, and form fields with Bootstrap 5.

Captions

We can add a caption to the top of the table with the caption-top class:

<table class="table caption-top">  
  <caption>List of people</caption>  
  <thead class="table-dark">  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
  <tfoot>  
    <tr>  
      <th>footer</th>  
      <td>footer</td>  
      <td>footer</td>  
      <td>footer</td>  
    </tr>  
  </tfoot>  
</table>

Responsive Tables

We can make tables responsive with the table-responsive class

To make it always responsive, we can use the table-responsive class:

<div class="table-responsive">  
  <table class="table">  
    <thead class="table-dark">  
      <tr>  
        <th scope="col">#</th>  
        <th scope="col">First</th>  
        <th scope="col">Last</th>  
        <th scope="col">Age</th>  
      </tr>  
    </thead>  
    <tbody>  
      <tr>  
        <th scope="row">1</th>  
        <td>james</td>  
        <td>smith</td>  
        <td>20</td>  
      </tr>  
      <tr>  
        <th scope="row">2</th>  
        <td>mary</td>  
        <td>jones</td>  
        <td>20</td>  
      </tr>  
      <tr>  
        <th scope="row">3</th>  
        <td colspan="2">Larry</td>  
        <td>50</td>  
      </tr>  
    </tbody>  
    <tfoot>  
      <tr>  
        <th>footer</th>  
        <td>footer</td>  
        <td>footer</td>  
        <td>footer</td>  
      </tr>  
    </tfoot>  
  </table>  
</div>

We make the table always responsive with the class in a div outside the table.

Also, we can make them responsive at a given breakpoint.

For example, we can write:

<div class="table-responsive-sm">  
  <table class="table">  
    <thead class="table-dark">  
      <tr>  
        <th scope="col">#</th>  
        <th scope="col">First</th>  
        <th scope="col">Last</th>  
        <th scope="col">Age</th>  
      </tr>  
    </thead>  
    <tbody>  
      <tr>  
        <th scope="row">1</th>  
        <td>james</td>  
        <td>smith</td>  
        <td>20</td>  
      </tr>  
      <tr>  
        <th scope="row">2</th>  
        <td>mary</td>  
        <td>jones</td>  
        <td>20</td>  
      </tr>  
      <tr>  
        <th scope="row">3</th>  
        <td colspan="2">Larry</td>  
        <td>50</td>  
      </tr>  
    </tbody>  
    <tfoot>  
      <tr>  
        <th>footer</th>  
        <td>footer</td>  
        <td>footer</td>  
        <td>footer</td>  
      </tr>  
    </tfoot>  
  </table>  
</div>

to make it responsive when the screen is wide enough to hit the sm breakpoint or wider.

sm can be substituted with md , lg , xl , or xxl .

Customizing in SASS

The table style presets can be changed in SASS.

The $table-striped-bg-factor, $table-active-bg-factor and $table-hover-bg-factor variables are used to determine the contrast in table variants.

Theme colors are lightened by the $table-bg-level variable.

Figures

We can add figures with captions with the figure tag.

The figcaption tag adds a caption for the figure.

Bootstrap 5 provides classes to make styling them easier.

For example, we can write:

<figure class="figure">  
  <img src="http://placekitten.com/200/200" class="figure-img img-fluid rounded" alt="cat">  
  <figcaption class="figure-caption">A cat.</figcaption>  
</figure>

With Bootstrap 5’s text utilities, aligning the figure captions are easy:

<figure class="figure">  
  <img src="http://placekitten.com/200/200" class="figure-img img-fluid rounded" alt="cat">  
  <figcaption class="figure-caption text-right">A cat.</figcaption>  
</figure>

With the text-right class, we aligned the caption to the right.

Form Controls

We can add form controls with Bootstrap 5 styles with the included classes.

For example, we can write:

<div class="mb-3">  
  <label for="email" class="form-label">Email address</label>  
  <input type="email" class="form-control" id="email" placeholder="name@example.com">  
</div><div class="mb-3">  
  <label for="text" class="form-label">Example textarea</label>  
  <textarea class="form-control" id="text" rows="3"></textarea>  
</div>

to add some form controls.

We have the form-control class to add the form control styles.

form-label class add the form label styles.

Sizing

To change the size of the controls, we can use the .form-control-lg and .form-control-sm classes:

<div class="mb-3">  
  <label for="email" class="form-label">Email address</label>  
  <input type="email" class="form-control-lg" id="email" placeholder="name@example.com">  
</div>

We make the form control large with the form-control-lg class.

Likewise, we can make them smaller with the .form-control.sm class:

<div class="mb-3">  
  <label for="email" class="form-label">Email address</label>  
  <input type="email" class="form-control-sm" id="email" placeholder="name@example.com">  
</div>

Readonly

We can add the readonly boolean attribute to prevent users from changing the input value of the form.

For example, we can write:

<div class="mb-3">  
  <label for="email" class="form-label">Email address</label>  
  <input type="email" class="form-control" id="email" placeholder="name@example.com" readonly>  
</div>

The form input will be grayed out.

Readonly Plain Text

If we want to have a readonly form field without the any styles, then we can use the .form-control-plaintext class to make the field display as plain text.

For example, we can write:

<div class="mb-3">  
  <label for="email" class="form-label">Email address</label>  
  <input type="email" class="form-control-plaintext" id="email" placeholder="name@example.com" readonly>  
</div>

Now there’re no borders and other things displayed.

Conclusion

We can add styles to tables, figures, and form fields.

Categories
Bootstrap HTML

Bootstrap 5 — More Table Styles

Bootstrap 5 is in alpha when this is written and it’s subject to change.

Bootstrap is a popular UI library for any JavaScript apps.

In this article, we’ll look at how to style tables with Bootstrap 5.

Tables without Borders

We can create a table without borders with the .table-borderless class:

<table class="table table-borderless">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

It also works with other variants:

<table class="table table-dark table-borderless">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Small Tables

We can use the .table-sm class to make a table more compact by reducing the padding in half:

<table class="table table-sm">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

This also works with other table variants:

<table class="table table-dark table-sm">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Vertical Alignment

The vertical alignment of tables can be changed with Bootstrap 5 classes.

They can be changed in cells, tables, or table rows:

<table class="table table-sm table-dark">  
  <div class="table-responsive">  
    <table class="table align-middle">  
      <thead>  
        <tr>  
          ...  
        </tr>  
      </thead>  
      <tbody>  
        <tr class="align-bottom">  
          ...  
        </tr>  
        <tr>  
          <td>...</td>  
          <td class="align-top">aligned to the top.</td>  
          <td>...</td>  
        </tr>  
      </tbody>  
    </table>  
  </div>  
</table>

We have the align-top , align-middle , and align-bottom classes to make the alignments.

Nesting

Border styles, active styles, and table variants aren’t inherited by nested tables.

For example, we can write:

<table class="table table-striped">  
  <thead>  
    <tr class="align-bottom">  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody> <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr> <tr>  
      <td colspan="4">  
        <table class="table align-bottom">  
          <thead>  
            <tr class="align-bottom">  
              <th scope="col">#</th>  
              <th scope="col">First</th>  
              <th scope="col">Last</th>  
              <th scope="col">Age</th>  
            </tr>  
          </thead>  
          <tbody>  
            <tr>  
              <th scope="row">1</th>  
              <td>james</td>  
              <td>smith</td>  
              <td>20</td>  
            </tr>  
            <tr>  
              <th scope="row">2</th>  
              <td>mary</td>  
              <td>jones</td>  
              <td>20</td>  
            </tr>  
            <tr>  
              <th scope="row">3</th>  
              <td colspan="2">Larry</td>  
              <td>50</td>  
            </tr>  
          </tbody>  
        </table>  
      </td>  
    </tr>  
  </tbody>  
</table>

to apply styles to nested tables.

The styles have to be applied to each table individually.

Table Head

We can use the .table-light or .table-dark classes to make the thead appear light or dark gray.

For example, we can write:

<table class="table">  
  <thead class="table-light">  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

to make the table heading light gray.

We can make it dark gray with the table-dark class:

<table class="table">  
  <thead class="table-dark">  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Table Foot

We can add a footer to a table with the tfoot element.

For example, we can write:

<table class="table">  
  <thead class="table-dark">  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
  <tfoot>  
    <tr>  
      <th>footer</th>  
      <td>footer</td>  
      <td>footer</td>  
      <td>footer</td>  
    </tr>  
  </tfoot>  
</table>

to add a footer.

Captions

We can add the caption tag to add a caption to label the table.

For example, we can write:

<table class="table">  
  <caption>List of people</caption>  
  <thead class="table-dark">  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
  <tfoot>  
    <tr>  
      <th>footer</th>  
      <td>footer</td>  
      <td>footer</td>  
      <td>footer</td>  
    </tr>  
  </tfoot>  
</table>

to add a label to the bottom of the table.

Conclusion

We can add tables with various styles.

Nested tables have to have styles applied to them individually.

Categories
Bootstrap HTML

Bootstrap 5 — Lists and Images

Bootstrap 5 is in alpha when this is written and it’s subject to change.

Bootstrap is a popular UI library for any JavaScript apps.

In this article, we’ll look at how to style lists and images with Bootstrap 5.

Lists

Bootstrap 5 removes the default list-style and left margin of list items.

This only applies to immediate children list items.

The class has to be added to nested lists.

For example, we can wire:

<ul class="list-unstyled">  
  <li>Lorem ipsum dolor sit amet</li>  
  <li>Duis id nunc dignissim</li>  
  <li>Nulla volutpat aliquam velit  
    <ul>  
      <li>Phasellus iaculis neque</li>  
      <li> Suspendisse potenti. Aliquam erat volutpat.</li>  
    </ul>  
  </li>  
  <li>Pellentesque habitant morbi tristique senectus</li>  
  <li>Aenean sit amet erat nunc</li>  
  <li>Eget porttitor lorem</li>  
</ul>

to add a nested list.

We added the list-unstyled class to add an unstyled list.

Inline

We can remove a list’s bullets and apply some light margin with the combination of the .list-inline and .list-inline-item classes:

<ul class="list-inline">  
  <li class="list-inline-item">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>  
  <li class="list-inline-item">Pellentesque quis nunc ultricies enim ullamcorper pretium at cursus tellus.</li>  
  <li class="list-inline-item"> Ut convallis quis lacus in volutpat. Pellentesque volutpat dui et enim mattis</li>  
</ul>

We add the classes to make the items display inline with margins.

Description List Alignment

To make a list with description, we can use the dl , dt , and dd tags with the width styles.

For example, we can write:

<dl class="row">  
  <dt class="col-sm-3">Description lists</dt>  
  <dd class="col-sm-9">A description list is perfect for defining terms.</dd>  
  
  <dt class="col-sm-3">Euismod</dt>  
  <dd class="col-sm-9">  
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>  
    <p>ellentesque quis nunc ultricies enim ullamcorper pretium at cursus tellus. Curabitur sit amet leo arcu. Integer vitae tincidunt odio. Duis id nunc dignissim.</p>  
  </dd>  
  
  <dt class="col-sm-3">Maecenas imperdiet sapien augue, ac malesuada metus ultrices et.</dt>  
  <dd class="col-sm-9">Aliquam erat volutpat. Quisque rutrum commodo felis imperdiet fermentum. Integer hendrerit dictum augue dapibus semper. In ac nisi consectetur.</dd>  
  
  <dt class="col-sm-3 text-truncate">Truncated term is truncated</dt>  
  <dd class="col-sm-9">Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</dd>  
  
  <dt class="col-sm-3">Nesting</dt>  
  <dd class="col-sm-9">  
    <dl class="row">  
      <dt class="col-sm-4">Nested definition list</dt>  
      <dd class="col-sm-8">Aenean dolor augue, vulputate non mattis eu, lacinia viverra ex.</dd>  
    </dl>  
  </dd>  
</dl>

We have the list with the dt and dd tags with the column classes to set the width of them.

Images

We can add responsive images with the img element and the .img-fluid class.

For example, we can write:

<img src="http://placekitten.com/200/200" class="img-fluid" alt="cat">

Image Thumbnails

To add thumbnails, we use the .img-thumbnail class:

<img src="http://placekitten.com/200/200" class="img-thumbnail" alt="cat">

Aligning Images

We can align images with the float-left or float-right classes:

<img src="http://placekitten.com/200/200" class="rounded float-left" alt="cat">  
<img src="http://placekitten.com/200/200" class="rounded float-right" alt="cat">

To make it aligned centered horizontally, we can write:

<img src="http://placekitten.com/200/200" class="rounded mx-auto d-block" alt="cat">

We used the mx-auto class to make the image centered.

Also, we can use the text-center class to do the same thing:

<div class="text-center">  
  <img src="http://placekitten.com/200/200" class="rounded" alt="cat">  
</div>

Picture

The picture element can be used to specify multiple sources of images.

So we can write:

​<picture>  
  <img src="http://placekitten.com/200/200" class="img-fluid img-thumbnail" alt="cat 1">  
  <img src="http://placekitten.com/201/201" class="img-fluid img-thumbnail" alt="cat 2">  
</picture>

We put the img elements in the picture tags.

And we’ve to add the img-* classes ion the img tag rather than the picture tag.

Conclusion

We can style lists and images with Bootstrap 5.

It comes with the classes for us to do so.

Categories
Bootstrap HTML

Bootstrap 5 — Tables

Bootstrap 5 is in alpha when this is written and it’s subject to change.

Bootstrap is a popular UI library for any JavaScript apps.

In this article, we’ll look at how to style tables with Bootstrap 5.

Tables

Bootstrap table styles are opt-in because of the widespread of use of tables in other UI components.

The table styles aren’t inherited in Bootstrap.

So nested tables can be styles independently of the parent.

For example, we can use the table class to style tables.

We can create a simple table by writing:

<table class="table">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Variants

There are many styling variants for a table.

We can style them with the following classes:

<table class="table-primary">...</table>  
<table class="table-secondary">...</table>  
<table class="table-success">...</table>  
<table class="table-danger">...</table>  
<table class="table-warning">...</table>  
<table class="table-info">...</table>  
<table class="table-light">...</table>  
<table class="table-dark">...</table>

They also work 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>

And they also work on table cells:

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

Accented Tables

We can add the .table-striped class to add zebra striping to table rows within the tbody .

For example, we can write:

<table class="table table-striped">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Stripes also work with other table variants:

<table class="table table-dark table-striped">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Hoverable Rows

To make rows hoverable, we can add the table-hover class:

<table class="table table-hover">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Now we see the row that we hovered on highlighted.

The hover effect can be combined with stripes:

<table class="table table-striped table-hover">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Active Tables

We can highlight a table row or cell with the table-active class:

<table class="table">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td class="table-active">james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

We add the table-active class on the cell so it’ll be highlighted.

This also works with other variants:

<table class="table table-success">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td class="table-active">james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

The styling works by setting the background with the --bs-table-bg property.

Then the gradient on the table is added with the background-image: linear-gradient(var( — bs-table-accent-bg), var( — bs-table-accent-bg)); CSS property.

When .table-striped , .table-hover or .table-active classes are added, the --bs-table-accent-bg is set to semitransparent color to change the color of the background.

--bs-table-accent-bg color with the highest contrast is generated for the highlights.

Text and border colors are generated the same way.

Table Borders

We can add borders with the table-bordered class:

<table class="table table-bordered">  
  <thead>  
    <tr>  
      <th scope="col">#</th>  
      <th scope="col">First</th>  
      <th scope="col">Last</th>  
      <th scope="col">Age</th>  
    </tr>  
  </thead>  
  <tbody>  
    <tr>  
      <th scope="row">1</th>  
      <td>james</td>  
      <td>smith</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">2</th>  
      <td>mary</td>  
      <td>jones</td>  
      <td>20</td>  
    </tr>  
    <tr>  
      <th scope="row">3</th>  
      <td colspan="2">Larry</td>  
      <td>50</td>  
    </tr>  
  </tbody>  
</table>

Conclusion

We can add tables with various effects like stripes, hover, and various colors.

Categories
Bootstrap HTML

Bootstrap 5 — Vertical Alignment and Resets

Bootstrap 5 is in alpha when this is written and it’s subject to change.

Bootstrap is a popular UI library for any JavaScript apps.

In this article, we’ll look at how to vertically align content and best practices with resets with Bootstrap 5.

Vertical Alignment

We can vertically align content with various classes.

To do that, we can apply one of the .align-baseline, .align-top, .align-middle, .align-bottom, .align-text-bottom, and .align-text-top classes.

Then we can write:

<span class="align-baseline">baseline</span>  
<span class="align-top">top</span>  
<span class="align-middle">middle</span>  
<span class="align-bottom">bottom</span>  
<span class="align-text-top">text-top</span>  
<span class="align-text-bottom">text-bottom</span>

We can align items with all these classes.

align-baseline aligns them to the baseline, which is the middle.

align-top aligns content to the top.

align-middle aligns things to the middle.

align-bottom aligns content to the bottom.

align-text-top aligns text to the top.

align-text-bottom aligns text to the bottom.

These classes can also be used within table cells.

For example, we can write:

<table style="height: 100px;">  
  <tbody>  
    <tr>  
      <td class="align-baseline">baseline</td>  
      <td class="align-top">top</td>  
      <td class="align-middle">middle</td>  
      <td class="align-bottom">bottom</td>  
      <td class="align-text-top">text-top</td>  
      <td class="align-text-bottom">text-bottom</td>  
    </tr>  
  </tbody>  
</table>

Then we get different results.

align-baseline works the same as align-top .

And align-text-top and align-text-bottom work the same way.

Visibility

Bootstrap 5 provides classes for controlling the visibility of content without modifying the display of elements.

We can use the visible class to make things visible and invisible to make things invisible.

For example, we can write:

<div class="visible">...</div>  
<div class="invisible">...</div>

Then the first div is visible and the 2nd one isn’t.

Reboot

Reboot provides a set of baseline CSS we can build our styles upon.

It’s built upon Normalize, which gives us many HTML elements with opinionated styles using only element selectors.

Additional styling is done with only classes.

It changes some browser defaults to use rems instead of em s for scalable component spacing.

margin-top is avoided. Vertical margins can collapse making results unexpected.

Single direction for margin is simpler.

rem s are used instead of margin s for easier scaling.

It also keeps declaration of font- related properties to a minimum and use inherit whenever possible.

Page Defaults

box-sizing is globally set on every element.

This ensures that the declared width of an element is never exceeded because of padding or border,

No base font-size is declared for the html element.

However, 16px is assumed.

This can be overridden with the $font-size-root variable.

body also see a global font-family , font-wwight , line-height and color.

body has a background-color set to #fff .

Native Font Stack

Bootstrap 5 sets the fonts to a given style.

It’s set with the following code:

$font-family-sans-serif:  
  -apple-system,  
  BlinkMacSystemFont,  
  "Segoe UI",  
  Roboto,  
  "Helvetica Neue", Arial,  
  "Noto Sans",  
  sans-serif,  
  "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;

We have fonts for all popular platforms like macOS and iOS, Windows, Android, Linux and emoji fonts.

Helvetica Neue and Arial are the default font if nothing else is available.

Headings and Paragraphs

Bootstrap 5 provides it own styles for headings and paragraphs.

They have margin-top removed and margin-bottom set to .5rem for headings and 1rem for paragraphs.

Lists

All lists have their margin-top removed and margin-bottom set to 1rem.

Nested lists have no margin-bottom . padding-left is reset for ul and ol elements.

dd have margin-left set to 0 and margin-bottom set to .5rem .

dt s are bolded.

Inline Code

If we wrap snippets of cod with code tags, then we need to escape HTML angle brackets.

Code Blocks

We can use pre s for multiple lines of code.

Bootstrap removes the margin-top for pre elements and use rem for margin-bottom .

Variables

If we use Bootstrap 5, then variables should be written inside var tags.

For example, we can write:

<var>y</var> = <var>m</var><var>x</var> + <var>b</var>

User Input

kbd indicates input that’s typically entered with a keyboard.

For example, we can write;

<kbd><kbd>ctrl</kbd> + <kbd>,</kbd></kbd>

to add keyboard keys instructions.

Conclusion

Bootstrap provides us with a CSS baseline that we can build on.

Content can be aligned with various classes.