Tabela html tr dentro de td

98

Estou tentando criar uma tabela em HTML. Tenho o seguinte design para criar. Eu adicionei um <tr>dentro do, <td>mas de alguma forma a tabela não foi criada de acordo com o design.

insira a descrição da imagem aqui

Alguém pode me sugerir como posso conseguir isso?

Não consigo criar Name1 | Seções Price1.

Escorpião
fonte

Respostas:

162

Você deve adicionar uma tabela completa dentro do td

    <table>
      <tr>
        <td>
          <table>
            <tr>
              <td>
                ...
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>

Herrhansen
fonte
1
É possível adicionar uma tabela completa dentro de um td ?? Eu nunca fiz isso, é por isso que estou perguntando isso. Se for, então é realmente ótimo
Scorpion
2
você pode colocar quase tudo em um td, apenas html, corpo e cabeça não são permitidos, eu acho
herrhansen
1
Sim, era exatamente disso que eu estava com medo.
Procurei
Bem, a partir de agora, ele não gera nenhum erro quando coloco tr s em td, na verdade eu coloquei muitos tr s dentro de alguns td s porque meu aplicativo renderiza matrizes de objetos dentro de algumas propriedades e funciona em todos os navegadores, (não sei sobre o IE, pois não testei no IE), qualquer pessoa interessada pode conferir - stackblitz.com/edit/angular-u7aman , Observação: é um aplicativo Angular, não tenho certeza se o Angular está por trás dele comportamento.
Hasintha Abeykoon
Mesmo que não gere um erro em seu navegador, é falso e pode gerar erros em outros navegadores ou circunstâncias. Você deve sempre tentar usar HTML-Elements no uso pretendido, como não usar block-Elements dentro de inline-Elements
herrhansen
39

Você não pode colocar tr dentro de td. Você pode ver o conteúdo permitido na documentação dos documentos da web do MDN sobre td. As informações relevantes estão na seção de conteúdo permitido .

Outra maneira de conseguir isso é usando colspane rowspan. Verifique este violino .

HTML:

<table width="100%">
 <tr>
  <td>Name 1</td>
  <td>Name 2</td>
  <td colspan="2">Name 3</td>
  <td>Name 4</td>
 </tr>

 <tr>
  <td rowspan="3">ITEM 1</td>
  <td rowspan="3">ITEM 2</td>
  <td>name1</td>
  <td>price1</td>
  <td rowspan="3">ITEM 4</td>
 </tr>

 <tr>
  <td>name2</td>
  <td>price2</td>
 </tr>
 <tr>
  <td>name3</td>
  <td>price3/td>
 </tr>
</table>

E algum CSS:

table {
    border-collapse: collapse       
}

td {
   border: 1px solid #000000
}
Lavavrik
fonte
11
colocar a tabela dentro da tabela é totalmente válido, escreva um código html simples onde você insere uma tabela dentro do TD e cola no validador w3: validator.w3.org/check Você vai notar que vai passar. todos os erros estão relacionados às tags doctype e head ausentes.
Malloc
colocar um elemento da tabela dentro de tr em inválido enquanto colocar uma tabela dentro de um td é válido ... você pode validar em validator.w3.org/check
Lucky
3
Acho que o significado pretendido aqui era que uma mesa dentro de uma mesa é uma abordagem estranha para o cenário, pois colspane rowspansão destinados a resolver esse problema.
conorbode
6
Não sei por que essa solução recebe tantos votos positivos. O código postado é totalmente opaco sem um navegador, alcançando um objetivo visual à custa da relação lógica que uma tabela deve representar. E, conforme observado por @Malloc, sua primeira frase é patentemente falsa.
brianpck
20

Você pode resolver sem aninhar tabelas.

<table border="1">
    <thead>
        <tr>
            <th>ABC</th>
            <th>ABC</th>
            <th colspan="2">ABC</th>
            <th>ABC</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td rowspan="4">Item1</td>
            <td rowspan="4">Item1</td>
            <td colspan="2">Item1</td>
            <td rowspan="4">Item1</td>
        </tr>
        <tr>
            <td>Name1</td>
            <td>Price1</td>
        </tr>
        <tr>
            <td>Name2</td>
            <td>Price2</td>
        </tr>
        <tr>
            <td>Name3</td>
            <td>Price3</td>
        </tr>
        <tr>
            <td>Item2</td>
            <td>Item2</td>
            <td colspan="2">Item2</td>
            <td>Item2</td>
        </tr>
    </tbody>
</table>

WalterV
fonte
6

Tente este código

<table border="1" width="100%">
<tr>
    <td>Name 1</td>
    <td>Name 2</td>
    <td colspan="2">Name 3</td>
    <td>Name 4</td>
</tr>

<tr>
    <td rowspan="3">ITEM 1</td>
    <td rowspan="3">ITEM 2</td>
    <td>name</td>
    <td>price</td>
    <td rowspan="3">ITEM 4</td>
</tr>
<tr>
    <td>name</td>
    <td>price</td>
</tr>
<tr>
    <td>name</td>
    <td>price</td>
</tr>
</table>
Kedar1442
fonte
4

Coloque outra tabela dentro do elemento td como esta .

<table>
    <tr>
        ...
    </tr>
    <tr>
        <td>ABC</td>
        <td>ABC</td>
        <td>
            <table>
                <tr>
                    <td>name1</td>
                    <td>price1</td>
                </tr>
...
            </table>
        </td>
        <td>ABC</td>
    </tr>
...
</table>
Patrick
fonte
4

Basta adicionar um novo tableno que tdvocê deseja. Exemplo: http://jsfiddle.net/AbE3Q/

<table border="1">
    <tr>
        <td>ABC</td>
        <td>ABC</td>
        <td>ABC</td>
        <td>ABC</td>
    </tr>
    <tr>
        <td>Item1</td>
        <td>Item2</td>
        <td><table border="1">
            <tr><td>qweqwewe</td><td>qweqwewe</td></tr>
            <tr><td>qweqwewe</td><td>qweqwewe</td></tr>
            <tr><td>qweqwewe</td><td>qweqwewe</td></tr>
            </table></td>
        <td>Item3</td>
    </tr>
    <tr>
    </tr>
    <tr>
    </tr>
    <tr>
    </tr>
    <tr>
    </tr>  
</table>
João C
fonte
4

Exemplo completo:

<table border="1" style="width:100%;">
  <tr>
    <td>ABC</td>
    <td>ABC</td>
    <td>ABC</td>
    <td>ABC</td>
  </tr>
  <tr>
    <td>Item 1</td>
    <td>Item 1</td>
    <td>
      <table border="1" style="width: 100%;">
        <tr>
          <td>Name 1</td>
          <td>Price 1</td>
        </tr>
        <tr>
          <td>Name 2</td>
          <td>Price 2</td>
        </tr>
        <tr>
          <td>Name 3</td>
          <td>Price 3</td>
        </tr>
      </table>
    </td>
    <td>Item 1</td>
  </tr>
  <tr>
    <td>Item 2</td>
    <td>Item 2</td>
    <td>Item 2</td>
    <td>Item 2</td>
  </tr>
  <tr>
    <td>Item 3</td>
    <td>Item 3</td>
    <td>Item 3</td>
    <td>Item 3</td>
  </tr>
</table>
Jagu
fonte
2

Você pode verificar isso apenas use a tabela dentro da tabela como esta

<!DOCTYPE html>
<html>
  <head>
    <style>
      table, th, td {
      border: 1px solid black;
      border-collapse: collapse;
      }
    </style>
  </head>
  <body>
    <table style="width:100%">
      <tr>
        <th>ABC</th>
        <th>ABC</th>
        <th>ABC</th>
        <th>ABC</th>
      </tr>
      <tr>
        <td>Item1</td>
        <td>Item1</td>
        <td>
          <table style="width:100%">
            <tr>
              <td>name1</td>
              <td>price1</td>
            </tr>
            <tr>
              <td>name2</td>
              <td>price2</td>
            </tr>
            <tr>
              <td>name3</td>
              <td>price3</td>
            </tr>
          </table>
        </td>
        <td>item1</td>
      </tr>
      <tr>
        <td>A</td>
        <td>B</td>
        <td>C</td>
        <td>D</td>
      </tr>
      <tr>
        <td>E</td>
        <td>F</td>
        <td>G</td>
        <td>H</td>
      </tr>
      <tr>
        <td>E</td>
        <td>R</td>
        <td>T</td>
        <td>T</td>
      </tr>
    </table>
  </body>
</html>
Arman H
fonte
0
<table border="1px;" width="100%" >
        <tr align="center">
            <td>Product</td>
            <td>quantity</td>
            <td>Price</td>
            <td>Totall</td>
        </tr>
        <tr align="center">
            <td>Item-1</td>
            <td>Item-1</td>
            <td>
                <table border="1px;" width="100%">
                    <tr align="center">
                        <td>Name1</td>
                        <td>Price1</td>
                    </tr>
                    <tr align="center">
                        <td>Name2</td>
                        <td>Price2</td>
                    </tr>
                    <tr align="center">
                        <td>Name3</td>
                        <td>Price3</td>
                    </tr>
                    <tr>
                        <td>Name4</td>
                        <td>Price4</td>
                    </tr>
                </table>
            </td>
            <td>Item-1</td>
        </tr>
        <tr align="center">
            <td>Item-2</td>
            <td>Item-2</td>
            <td>Item-2</td>
            <td>Item-2</td>
        </tr>
        <tr align="center">
            <td>Item-3</td>
            <td>Item-3</td>
            <td>Item-3</td>
            <td>Item-3</td>
        </tr>
    </table>
Azizul Hakim
fonte