Bootstrap 4 - Tabelas
Descrição
As tabelas são usadas para exibir os dados em um formato tabular. Se você deseja um estilo de tabela básico com apenas um pouco de preenchimento leve e divisórias horizontais, adicione a classe .table ao elemento <table>. Para obter mais informações sobre a tabela básica e seus elementos, consulte este capítulo .
Mesa Escura
Você pode usar a classe .table-dark para adicionar um fundo preto à tabela, como visto no exemplo a seguir -
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Dark Table</h2>
<table class = "table table-dark">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -
Resultado
Opções de cabeça de mesa
Você pode adicionar um fundo preto ou cinza aos cabeçalhos da tabela usando as classes .thead-dark e .thead-light como visto no exemplo a seguir -
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Dark Head</h2>
<table class = "table">
<thead class = "thead-dark">
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
<h2>Light Head</h2>
<table class = "table">
<thead class = "thead-light">
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -
Resultado
Linhas Listradas
Ao adicionar a classe .table-stripes , você obterá listras nas linhas, como visto no exemplo a seguir -
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Striped Rows</h2>
<table class = "table table-striped">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -
Resultado
Mesa com e sem borda
Use a classe .table-bordered para fazer as bordas ao redor da tabela e das células. Se você não quiser usar borda para uma tabela, use a classe .table-borderless .
O exemplo a seguir demonstra o uso das classes acima na tabela -
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Bordered Table</h2>
<table class = "table table-bordered">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
<h2>Borderless Table</h2>
<table class = "table table-borderless">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -
Resultado
Linhas Hoverable
Ao adicionar a classe .table-hover , uma cor de fundo cinza claro será adicionada às linhas enquanto o cursor passa sobre elas, como visto no exemplo a seguir -
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Hoverable Rows</h2>
<table class = "table table-hover">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -
Resultado
Pequena mesa
Você pode usar a classe .table-sm para fazer a mesa pequena, cortando o preenchimento da célula pela metade, conforme mostrado no exemplo abaixo -
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Small Table</h2>
<table class = "table table-sm">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -
Resultado
Classes contextuais
Você pode usar classes contextuais para aplicar cor às linhas da tabela ou células da tabela, como visto no exemplo a seguir -
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Contextual Classes</h2>
<table class = "table">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr class = "table-active">
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
</tr>
<tr class = "table-success">
<td>Joe Root</td>
<td>England</td>
<td>2</td>
</tr>
<tr class = "table-danger">
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
</tr>
<tr class = "table-info">
<td>Kane Williamson</td>
<td>New Zealand</td>
<td>4</td>
</tr>
<tr class = "table-warning">
<td>Dinesh Chandimal</td>
<td>Srilanka</td>
<td>5</td>
</tr>
<tr class = "table-secondary">
<td>Alastair Cook</td>
<td>England</td>
<td>6</td>
</tr>
<tr class = "table-light">
<td>Kraigg Brathwaite</td>
<td>West Indies</td>
<td>7</td>
</tr>
<tr class = "table-primary">
<td>Cheteshwar Pujara</td>
<td>India</td>
<td>9</td>
</tr>
<tr class = "table-dark">
<td>Hashim Amla</td>
<td>South Africa</td>
<td>8</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -
Resultado
Tabelas responsivas
Ao envolver qualquer .table na classe .table-responsive , você fará a tabela rolar horizontalmente até pequenos dispositivos (abaixo de 992 px). Ao visualizar em algo maior que 992 px de largura, você não verá nenhuma diferença nessas tabelas.
Exemplo
<html lang = "en">
<head>
<!-- Meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1, shrink-to-fit = no">
<!-- Bootstrap CSS -->
<link rel = "stylesheet"
href = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity = "sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin = "anonymous">
<title>Bootstrap 4 Example</title>
</head>
<body>
<div class = "container">
<h2>Responsive Tables</h2>
<table class = "table">
<thead>
<tr>
<th>Player</th>
<th>Country</th>
<th>Ranking</th>
<th>Runs</th>
<th>Highest Score</th>
<th>Avg</th>
<th>Strike Rate</th>
<th>Hundreds</th>
<th>Fifties</th>
</tr>
</thead>
<tbody>
<tr>
<td>Virat Kohli</td>
<td>India</td>
<td>1</td>
<td>9774</td>
<td>183</td>
<td>53.92</td>
<td>60.75</td>
<td>35</td>
<td>48</td>
</tr>
<tr>
<td>Joe Root</td>
<td>England</td>
<td>2</td>
<td>4800</td>
<td>133</td>
<td>51.61</td>
<td>55.20</td>
<td>13</td>
<td>28</td>
</tr>
<tr>
<td>Steven Smith</td>
<td>Australia</td>
<td>3</td>
<td>3431</td>
<td>164</td>
<td>41.84</td>
<td>86.36</td>
<td>10</td>
<td>19</td>
</tr>
</tbody>
</table>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin = "anonymous">
</script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin = "anonymous">
</script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity = "sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin = "anonymous">
</script>
</body>
</html>
Isso produzirá o seguinte resultado -