Trilha de aprendizado · Nível 5 · Tutorial 3

Mesclar células com colspan e rowspan

Criar células que abrangem várias linhas ou colunas, preservando a grade da tabela e as associações de cabeçalhos que representam grupos de dados.

  • Nível: Intermediário
  • Duração: 25 min
  • 8 passos
Mesclar células com colspan e rowspan

O que você vai percorrer

  1. Abranger colunas com colspan Use uma única célula para representar informações compartilhadas por várias colunas, sem criar células extras na linha. 3 min
  2. Abranger linhas com rowspan Use rowspan para ocupar várias linhas e omita as células das posições já cobertas. 3 min
  3. Respeitar os limites dos grupos de linhas Dimensione rowspan sem atravessar os limites de thead, tbody ou tfoot, preservando os grupos que representam os dados. 2 min
  4. Conferir a grade com mesclagens combinadas Mapeie as posições ocupadas por colspan e rowspan para encontrar sobreposições, lacunas e células extras. 4 min
  5. Declarar grupos de colunas com colgroup Declare grupos de colunas consecutivas e ajuste seus valores de span à sequência real de colunas da tabela. 3 min
  6. Associar cabeçalhos a grupos de colunas Use scope="colgroup" para associar um cabeçalho ao grupo de colunas declarado, mantendo os cabeçalhos individuais. 3 min
  7. Associar cabeçalhos a grupos de linhas Use scope="rowgroup" para nomear grupos de linhas e preserve os cabeçalhos individuais de cada linha. 3 min
  8. Aplicação final: mesclar sem perder as relações Complete uma tabela com grupos de linhas e colunas e revise separadamente a ocupação da grade e as associações dos cabeçalhos. 5 min

O que você vai aprender

  • Aplicar colspan e rowspan quando uma célula representar informações compartilhadas por várias posições da tabela.
  • Calcular as posições ocupadas pelas células mescladas para evitar sobreposições e células extras.
  • Manter células com rowspan dentro de um mesmo grupo de linhas.
  • Declarar grupos de colunas com colgroup e span quando necessários à associação dos cabeçalhos.
  • Usar scope="rowgroup" e scope="colgroup" em cabeçalhos que abrangem os respectivos grupos.

Antes de começar

  • Criar tabelas simples com cabeçalhos e título
  • Organizar grupos de linhas com thead, tbody e tfoot

Passo 1 de 8

Abranger colunas com colspan

Use uma única célula para representar informações compartilhadas por várias colunas, sem criar células extras na linha.

Uma informação, várias colunas

Conte também a coluna inicial

Use colspan quando uma mesma informação se aplica a colunas consecutivas — não apenas para deixar uma célula mais larga.

O valor indica o total de colunas ocupadas, incluindo aquela em que a célula começa. Assim, colspan="2" ocupa duas colunas, não três.

Nesta programação, uma única oficina ocupa a manhã e a tarde:

Uma célula para os dois turnos

html
<table>
  <caption>Programação das oficinas</caption>
  <thead>
    <tr>
      <th scope="col">Dia</th>
      <th scope="col">Manhã</th>
      <th scope="col">Tarde</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Segunda-feira</th>
      <td colspan="2">Oficina de HTML</td>
    </tr>
  </tbody>
</table>

Dica

Não é uma junção automática de textos

Adicionar colspan não combina o conteúdo de células existentes. Você escreve a informação compartilhada em uma única célula.

Defina a extensão da oficina

Agora a tabela tem quatro colunas: Dia, 9h, 10h e 11h. A oficina ocupa os três horários.

Complete o atributo

html
<tr>
  <th scope="row">Terça-feira</th>
  <td colspan="___">Oficina de HTML</td>
</tr>

Qual número deve substituir a lacuna em colspan?

Mantenha a função e ajuste a linha

Também funciona em cabeçalhos

colspan pode ser usado em th ou td: um cabeçalho continua sendo cabeçalho; um dado continua sendo dado.

Em uma tabela com Produto, Quantidade e Subtotal (R$), o rodapé pode ter o cabeçalho “Total” abrangendo as duas primeiras colunas e o valor na terceira:

Trecho do rodapé

html
<tr>
  <th colspan="2" scope="row">Total</th>
  <td>180,00</td>
</tr>

Dica

Não crie células para posições já ocupadas

Essa linha tem dois elementos de célula, mas ocupa três colunas: 2 + 1 = 3. Não coloque um td vazio para a segunda coluna: ela já pertence ao cabeçalho “Total”. A célula extra deslocaria o valor para a quarta coluna.

Complete a linha sem células extras

A programação agora tem cinco colunas: Dia, 9h, 10h, 11h e 12h. A oficina ocupa os três primeiros horários. Às 12h, há outra atividade.

A linha ainda está incompleta:

html
<tr>
  <th scope="row">Quarta-feira</th>
  <td colspan="3">Oficina de HTML</td>
</tr>

Quantas células faltam?

Quantas células td sem mesclagem devem ser adicionadas depois da oficina, antes de fechar o tr?

Passo 2 de 8

Abranger linhas com rowspan

Use rowspan para ocupar várias linhas e omita as células das posições já cobertas.

Conte também a linha inicial

Uma célula em várias linhas

Use rowspan para definir quantas linhas uma célula abrange, incluindo a linha em que começa. rowspan="2" ocupa a linha inicial e mais uma, não duas linhas adicionais.

Nos exemplos, usaremos números inteiros positivos, como 2 e 3. A célula fica no tr de origem; nas linhas seguintes, omita as células das posições que ela já ocupa.

Uma sala compartilhada por duas atividades

Neste trecho, as colunas são Sala, Horário e Atividade. A Sala A vale para as duas linhas.

html
<tbody>
  <tr>
    <td rowspan="2">Sala A</td>
    <td>9h</td>
    <td>Leitura</td>
  </tr>
  <tr>
    <td>10h</td>
    <td>Escrita</td>
  </tr>
</tbody>

Dica

Cabeçalho ou dado?

rowspan pode ser aplicado em th ou td. Use th se a informação for um cabeçalho e td se for um dado. A extensão vertical não muda essa função.

Mapeie as posições ocupadas

Até onde vai cada célula?

Considere uma grade de três linhas e duas colunas. L indica linha; C indica coluna. Assim, L2C1 é a primeira coluna da segunda linha.

Relacione cada trecho ao mapa de posições ocupadas pela mesma célula. Cada caso é independente, sem outras mesclagens.

Toque em um item e depois no par correspondente.

Não preencha uma posição já ocupada

A mesclagem também pode estar no meio

Agora imagine as colunas na ordem Horário, Sala e Atividade. A célula Sala A começa na segunda coluna e abrange duas linhas. Na linha seguinte, você escreve apenas as células de Horário e Atividade: a posição da Sala já está ocupada.

Exemplo

Ocupação da segunda linha

Coluna 1 → nova célula: 10h
Coluna 2 → continuação da célula Sala A, criada antes
Coluna 3 → nova célula: Escrita

São três posições ocupadas, mas apenas dois elementos td nesse tr.

Dica

Célula vazia não serve para pular

Não insira <td></td> como compensação. Mesmo vazio, esse elemento cria uma nova célula; ele não representa a continuação do rowspan.

Escreva só as células necessárias

Primeira linha

As colunas são Horário, Sala e Atividade. Este é o primeiro tr do corpo da tabela:

html
<tr>
  <td>9h</td>
  <td rowspan="2">Sala A</td>
  <td>Leitura</td>
</tr>

Qual deve ser o próximo tr?

A próxima atividade é Escrita, às 10h, na mesma Sala A. Escolha a marcação que mantém cada informação na coluna prevista.

Passo 3 de 8

Respeitar os limites dos grupos de linhas

Dimensione rowspan sem atravessar os limites de thead, tbody ou tfoot, preservando os grupos que representam os dados.

O limite é o grupo de linhas

Uma célula com rowspan deve ficar inteiramente no grupo de linhas em que começa: seu thead, tbody ou tfoot.

A abertura de outro tbody também marca um limite. Mesmo que os dois pertençam ao corpo da mesma tabela, a mesclagem não pode continuar de um para o outro.

Atenção

Preserve o significado dos grupos

Não una grupos de dados distintos apenas para acomodar um rowspan maior. Ajuste a extensão da célula à divisão que faz sentido para os dados.

Corrija sem juntar as remessas

Este trecho pertence a uma tabela com as colunas Destino e Item. Cada tbody reúne os itens de uma remessa distinta. A mesclagem de Recife está excessiva.

Trecho com erro

html
<tbody>
  <tr>
    <td rowspan="3">Recife</td>
    <td>Caderno</td>
  </tr>
  <tr><td>Lápis</td></tr>
</tbody>
<tbody>
  <tr>
    <td rowspan="2">Natal</td>
    <td>Caneta</td>
  </tr>
  <tr><td>Borracha</td></tr>
</tbody>

Qual alteração corrige a mesclagem de Recife e preserva a separação entre as remessas?

Conte a partir da origem

O limite não é necessariamente o total de linhas do grupo. Conte da linha em que a célula começa até a última linha desse mesmo grupo, incluindo a origem. Linhas anteriores à célula não entram na conta.

Exemplo

Começando na terceira linha

Um tbody tem quatro linhas, e a célula começa na terceira:

  • 3ª linha: origem, conta como 1.
  • 4ª linha: conta como 2 e encerra o grupo.

O maior valor possível é rowspan="2". Use uma extensão menor se a informação não valer para todas as linhas disponíveis.

Encontre o limite no cabeçalho

Um thead tem quatro linhas. Uma célula começa na segunda linha desse grupo. Depois do thead, há um tbody com seis linhas.

Sem alterar os grupos, o maior valor permitido para essa célula é rowspan="___".

Passo 4 de 8

Conferir a grade com mesclagens combinadas

Mapeie as posições ocupadas por colspan e rowspan para encontrar sobreposições, lacunas e células extras.

Uma célula, um retângulo

Considere uma agenda com quatro colunas: C1 = Horário, C2 = Sala A, C3 = Sala B e C4 = Sala C.

A oficina conjunta ocupa as salas A e B nos horários de 9h e 10h. Com colspan="2" e rowspan="2", uma única célula ocupa um retângulo de 2 colunas × 2 linhas: quatro posições. Cada posição prevista deve pertencer a uma única célula.

Trecho do corpo da agenda

html
<tbody>
  <tr>
    <th scope="row">9h</th>
    <td colspan="2" rowspan="2">Oficina conjunta</td>
    <td>Palestra</td>
  </tr>
  <tr>
    <th scope="row">10h</th>
    <td>Debate</td>
  </tr>
</tbody>

Exemplo

Leia as posições, não apenas as tags

  • Linha 1: C1 = 9h; C2–C3 = Oficina conjunta; C4 = Palestra.
  • Linha 2: C1 = 10h; C2–C3 = continuação da mesma célula da oficina; C4 = Debate.

No segundo tr, há apenas duas células no código. Mesmo assim, as quatro posições estão ocupadas: duas pelas células dessa linha e duas pela mesclagem iniciada acima.

Encontre a sobreposição

Segunda linha alterada

Na agenda anterior, alguém alterou apenas o segundo tr. A oficina continua ocupando C2 e C3 nas duas linhas.

html
<tr>
  <th scope="row" colspan="2">10h</th>
  <td>Debate</td>
</tr>

Qual análise corresponde à ocupação da grade?

Confira linha por linha

Roteiro de conferência

  1. Defina a quantidade prevista de colunas e o significado de cada uma.
  2. Ao iniciar uma linha, marque as posições já ocupadas por mesclagens vindas de cima.
  3. Percorra as novas células da esquerda para a direita. Cada uma começa na próxima posição livre, mas todo o retângulo abrangido precisa estar livre.
  4. Ao terminar, procure sobreposições, posições sem a célula esperada e células além da última coluna prevista.

Contar th e td, ou apenas somar os colspan do tr atual, ignora as posições ocupadas por rowspan anteriores.

Exemplo

Faltar uma célula é diferente de sobrar

Partindo da agenda correta de quatro colunas:

  • Se você remover <td>Debate</td>, a posição C4 da segunda linha ficará sem a célula prevista.
  • Se inserir <td></td> antes de Debate, a célula vazia ocupará C4 e Debate será deslocado para C5, criando uma coluna extra.

Uma célula vazia também ocupa espaço na grade.

Corrija sem perder dados

Agora são cinco colunas

Outra agenda tem C1 = Horário, C2 = Sala A, C3 = Sala B, C4 = Sala C e C5 = Sala D.

A oficina conjunta ocupa as salas A, B e C nos dois horários. Na sala D, há Leitura às 14h e Quiz às 15h. O trecho abaixo não representa essa distribuição corretamente.

Trecho com erros

html
<tbody>
  <tr>
    <th scope="row">14h</th>
    <td colspan="2" rowspan="2">Oficina conjunta</td>
    <td>Leitura</td>
  </tr>
  <tr>
    <th scope="row">15h</th>
    <td></td>
    <td>Quiz</td>
  </tr>
</tbody>

Ajuste o código e explique a grade

Reescreva o tbody com as correções necessárias, preservando todos os horários e atividades e mantendo cinco colunas. Depois, indique quem ocupa C1 a C5 em cada linha para justificar sua resposta.

Escreva pelo menos 50 caracteres (0/50).

Passo 5 de 8

Declarar grupos de colunas com colgroup

Declare grupos de colunas consecutivas e ajuste seus valores de span à sequência real de colunas da tabela.

Declarar um grupo não é mesclar células

colgroup declara um grupo de colunas consecutivas. Seu atributo span indica quantas colunas pertencem ao grupo.

No exemplo, há um grupo de uma coluna para identificar o produto e outro de duas colunas para os dados de estoque. Ao contrário de colspan, span em colgroup não mescla células.

Uma coluna de identificação e duas de estoque

html
<table>
  <caption>Estoque por produto</caption>
  <colgroup span="1"></colgroup>
  <colgroup span="2"></colgroup>
  <thead>
    <tr>
      <th scope="col">Produto</th>
      <th scope="col">Atual</th>
      <th scope="col">Mínimo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Caderno</th>
      <td>30</td>
      <td>10</td>
    </tr>
  </tbody>
</table>

Dica

Lugar e forma da declaração

Coloque os elementos colgroup diretamente dentro de table, após caption, quando houver, e antes dos grupos de linhas (thead, tbody e tfoot). Na forma usada aqui, declare span e deixe o elemento sem conteúdo: <colgroup span="2"></colgroup>.

Posicione as declarações

Qual é a sequência correta?

Organize estes blocos dentro de table. As reticências representam o conteúdo dos grupos de linhas, omitido para destacar a estrutura.

  1. <thead>…</thead>
  2. <colgroup span="1"></colgroup> <colgroup span="2"></colgroup>
  3. <tbody>…</tbody>
  4. <caption>Estoque por produto</caption>

A sequência determina quais colunas pertencem ao grupo

Agora imagine cinco colunas, nesta ordem:

Produto | Atual A | Mínimo A | Atual B | Mínimo B

Queremos separar a identificação, o estoque da Loja A e o estoque da Loja B. O primeiro colgroup começa na coluna 1; cada grupo seguinte começa logo após o anterior.

Trecho a inserir após caption

html
<!-- Coluna 1: identificação do produto -->
<colgroup span="1"></colgroup>

<!-- Colunas 2 e 3: estoque da Loja A -->
<colgroup span="2"></colgroup>

<!-- Colunas 4 e 5: estoque da Loja B -->
<colgroup span="2"></colgroup>

Atenção

Não pule a coluna de identificação

Se você retirar a primeira declaração, o primeiro grupo de duas colunas passará a incluir Produto e Atual A. Os comentários não escolhem as colunas: a correspondência depende da ordem dos elementos e dos valores de span.

Complete os tamanhos dos grupos

Uma tabela tem seis colunas, nesta ordem:

Código | Produto | Janeiro | Fevereiro | Março | Total

Declare três grupos consecutivos: identificação, meses e total. O último já usa <colgroup span="1"></colgroup>. Complete os valores dos dois primeiros.

Primeiro grupo: identificação

Inclua Código e Produto no primeiro grupo:
<colgroup span="___"></colgroup>

Segundo grupo: meses

Inclua Janeiro, Fevereiro e Março no segundo grupo:
<colgroup span="___"></colgroup>

Passo 6 de 8

Associar cabeçalhos a grupos de colunas

Use scope="colgroup" para associar um cabeçalho ao grupo de colunas declarado, mantendo os cabeçalhos individuais.

Extensão não é associação

Considere um grupo de colunas já declarado para Loja e Depósito. O cabeçalho Estoque nomeia esse conjunto.

colspan e rowspan definem a extensão da célula na grade. Já scope indica a quais dados um cabeçalho se aplica.

Cabeçalho do grupo

html
<th colspan="2" scope="colgroup">Estoque</th>

Dica

Duas funções no mesmo th

colspan="2" faz Estoque ocupar duas colunas; scope="colgroup" indica que ele se aplica ao grupo de colunas ao qual pertence. Mesclar o cabeçalho não declara automaticamente essa associação.

Loja e Depósito continuam com scope="col", pois cada um identifica sua própria coluna.

Escolha pela função

Relacione intenção e atributo

Associe cada intenção à marcação adequada no cabeçalho.

Toque em um item e depois no par correspondente.

Alinhe o cabeçalho ao grupo declarado

A coluna Produto fica fora do grupo Estoque. O segundo colgroup corresponde exatamente às duas colunas abrangidas pelo cabeçalho de grupo.

Grupo e cabeçalhos individuais juntos

html
<table>
  <caption>Estoque por local</caption>
  <colgroup span="1"></colgroup>
  <colgroup span="2"></colgroup>
  <thead>
    <tr>
      <th rowspan="2" scope="col">Produto</th>
      <th colspan="2" scope="colgroup">Estoque</th>
    </tr>
    <tr>
      <th scope="col">Loja</th>
      <th scope="col">Depósito</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Caderno</td>
      <td>12</td>
      <td>30</td>
    </tr>
  </tbody>
</table>

Dica

Confira quantidade e posição

Não basta encontrar span="2" e colspan="2": ambos precisam corresponder às mesmas colunas, aqui a segunda e a terceira.

O cabeçalho Estoque acrescenta o contexto do grupo; Loja e Depósito preservam a identificação de cada coluna.

Corrija a correspondência

Na tabela anterior, alguém trocou apenas as declarações dos grupos pelo trecho abaixo. As colunas continuam na ordem Produto, Loja, Depósito, e Estoque mantém colspan="2" scope="colgroup" sobre Loja e Depósito.

Declarações a revisar

html
<colgroup span="2"></colgroup>
<colgroup span="1"></colgroup>

Qual ajuste preserva a relação desejada?

Estoque deve representar somente o grupo formado por Loja e Depósito.

Passo 7 de 8

Associar cabeçalhos a grupos de linhas

Use scope="rowgroup" para nomear grupos de linhas e preserve os cabeçalhos individuais de cada linha.

Um cabeçalho para o conjunto

A região nomeia o grupo

Em uma tabela de filiais por região, use um tbody por região e scope="rowgroup" no th que a identifica. Assim, o cabeçalho se aplica ao grupo de linhas que o contém.

As filiais continuam com scope="row": cada uma identifica sua própria linha.

Trecho do corpo: região, filial e unidades

html
<tbody>
  <tr>
    <th rowspan="2" scope="rowgroup">Norte</th>
    <th scope="row">Centro</th>
    <td>12</td>
  </tr>
  <tr>
    <th scope="row">Lago</th>
    <td>8</td>
  </tr>
</tbody>

Dica

Faça o nome corresponder ao grupo

Esse tbody contém somente filiais do Norte. Para incluir outra região, crie outro tbody com seu próprio cabeçalho de grupo. A divisão representa a organização dos dados, não apenas sua aparência.

Extensão não é declaração de grupo

Basta ocupar duas linhas?

O atributo rowspan="2", sozinho, declara explicitamente que Norte é o cabeçalho de um grupo de linhas.

Alinhar os cabeçalhos aos grupos

Código a corrigir: duas regiões no mesmo tbody

As colunas são região, filial e unidades. Observe que há apenas um grupo de linhas.

html
<tbody>
  <tr>
    <th rowspan="2" scope="rowgroup">Norte</th>
    <th scope="row">Centro</th><td>12</td>
  </tr>
  <tr>
    <th scope="row">Lago</th><td>8</td>
  </tr>
  <tr>
    <th rowspan="2" scope="rowgroup">Sul</th>
    <th scope="row">Parque</th><td>10</td>
  </tr>
  <tr>
    <th scope="row">Porto</th><td>6</td>
  </tr>
</tbody>

Corrija a associação

Cada região deve ter seu próprio grupo estrutural de linhas e continuar como cabeçalho desse grupo com scope="rowgroup". Cada filial deve continuar identificando apenas sua linha. Qual alteração atende a esses requisitos?

Passo 8 de 8

Aplicação final: mesclar sem perder as relações

Complete uma tabela com grupos de linhas e colunas e revise separadamente a ocupação da grade e as associações dos cabeçalhos.

O resultado que você vai construir

Uma tabela, duas revisões

Finalize uma tabela de vendas com quatro colunas: Região, Cidade, Jan e Fev.

O resultado deve atender a estes critérios:

  • No cabeçalho, Região e Cidade ocupam as duas linhas. 1º bimestre abrange apenas Jan e Fev.
  • Declare um grupo de colunas para Região, outro para Cidade e um terceiro para os dois meses.
  • No corpo, Nordeste e Sul aparecem uma vez cada, identificando suas duas cidades. Mantenha um tbody por região.
  • Preserve todas as cidades e quantidades, além dos cabeçalhos individuais de linha e coluna.

Dica

Separe extensão e significado

Faça duas passagens: confira primeiro quais posições cada célula ocupa; depois, confira a quais linhas ou colunas cada cabeçalho se aplica. Uma grade correta não garante, sozinha, associações corretas.

Complete a estrutura-base

Rascunho para editar

Este rascunho ainda não representa a grade final. Ajuste as células e acrescente as declarações e os atributos necessários.

html
<table>
  <caption>Vendas no 1º bimestre (unidades)</caption>
  <thead>
    <tr>
      <th scope="col">Região</th>
      <th scope="col">Cidade</th>
      <th>1º bimestre</th>
    </tr>
    <tr>
      <td></td><td></td>
      <th scope="col">Jan</th>
      <th scope="col">Fev</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Nordeste</th><th scope="row">Natal</th>
      <td>12</td><td>15</td>
    </tr>
    <tr>
      <th>Nordeste</th><th scope="row">Recife</th>
      <td>18</td><td>20</td>
    </tr>
  </tbody>
  <tbody>
    <tr>
      <th>Sul</th><th scope="row">Curitiba</th>
      <td>10</td><td>14</td>
    </tr>
    <tr>
      <th>Sul</th><th scope="row">Porto Alegre</th>
      <td>16</td><td>19</td>
    </tr>
  </tbody>
</table>

Entregue a tabela completa

Reescreva o HTML para cumprir os critérios da tela anterior. Use colgroup com span, as mesclagens necessárias e scope de grupo. Remova as células que ficarem em posições já cobertas, sem perder dados.

Depois de enviar, compare sua resposta com a solução de referência.

Escreva pelo menos 100 caracteres (0/100).

Revise além da aparência

A grade continua certa. E o grupo?

Após a conclusão, alguém substituiu os três colgroup por um único <colgroup span="4"></colgroup>. O cabeçalho 1º bimestre continua com colspan="2" e scope="colgroup".

Qual ajuste recupera o grupo exclusivo de Jan e Fev, sem alterar a grade?

Critérios para concluir

Resumo

Checklist de mesclagem e associação

Antes de considerar uma tabela concluída, confira estes quatro pontos:

  • Grade: cada posição prevista pertence a uma única célula. Conte também as posições ocupadas por mesclagens anteriores; não acrescente células vazias para compensá-las.
  • Limites: cada rowspan termina dentro do mesmo thead, tbody ou tfoot em que começou, sem atravessar para outro grupo.
  • Colunas: os colgroup aparecem após caption e antes dos grupos de linhas. Seus span correspondem às colunas, incluindo as de identificação anteriores aos dados.
  • Cabeçalhos: a extensão e a associação são conferidas separadamente. Nesta tabela, o bimestre usa scope="colgroup", as regiões usam scope="rowgroup", as cidades mantêm scope="row" e os cabeçalhos individuais de coluna mantêm scope="col".

Tutorial concluído

Parabéns! Você concluiu: Mesclar células com colspan e rowspan

Você concluiu “Mesclar células com colspan e rowspan”. Use o checklist para revisar suas próximas tabelas com mesclagens.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso