CSS - Alinhamento de tabelas dentro de tabelas

7 respostas
N

E aí, galera do GUJ! Tudo bem?
Tô com uma dúvida com CSS aqui que tá matando a pau minha aplicação… rs

Bom, meu cenário é o seguinte: exibir os horários que o funcionário bateu o ponto e quais as ocorrências geradas nesse dia.
Bom, eu tenho uma tabela que exibe qual a data e qual o horário que ele bateu o ponto neste dia. A cada registro desse, eu tenho uma tabela dentro da linha para representar as ocorrências deste mesmo dia.

Bom, colocarei anexas ao tópico duas imagens representando o resultado que quero.
Se puderem me dar uma força, ficaria grato! Abraços!!



7 Respostas

N

Up!

W

já fez alguma coisa? mostre-nos o código.

N

O código de gerar as tabelas já tá bonitinho; meu problema é como usar CSS para alinhar isso, entende?

Aliás, o meu código é ASP.NET, então creio que alguns não entenderiam, mas como você pediu, lá vai:

<asp:GridView ID="gridviewApuracoes" runat="server" GridLines="Horizontal">
                
                <Columns>

                    <!-- 
                      Cada TemplateField equivale a uma coluna
                       -->

                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:CheckBox runat="server" ID="checkboxApuracao" />
                        </ItemTemplate>
                        <ControlStyle Width="10%" />
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Data da apuração">
                        <ItemTemplate>
                            <asp:Label runat="server" ID="labelDataApuracao" Text="#"></asp:Label>    
                            <asp:Label runat="server" ID="labelHorarioFuncionario" Text="#"></asp:Label>
                            <br />
                            <br />
                              
                            &lt;!-- 
                               Aqui vem a minha outra "Table", que, no caso, é uma GridView. Meu problema é em 
                               alinhá-la dentro da GridView (Table) mãe, à direita.                               
                               --&gt;
                            &lt;asp:GridView runat="server" ID="gridviewOcorrencias" GridLines="None"&gt;
                                 &lt;Columns&gt;
                                    &lt;asp:TemplateField&gt;
                                        &lt;ItemTemplate&gt;
                                            &lt;asp:Label runat="server" ID="labelNomeOcorrencia" Text="#" /&gt;
                                        &lt;/ItemTemplate&gt;
                                    &lt;/asp:TemplateField&gt;

                                    &lt;asp:TemplateField&gt;
                                        &lt;ItemTemplate&gt;
                                            &lt;asp:Label runat="server" ID="labelQtdeHoras" Text="#" /&gt;
                                        &lt;/ItemTemplate&gt;
                                    &lt;/asp:TemplateField&gt;
                                  
                                &lt;/Columns&gt;
                            &lt;/asp:GridView&gt;

                        &lt;/ItemTemplate&gt;
                    &lt;/asp:TemplateField&gt;
                &lt;/Columns&gt;
            &lt;/asp:GridView&gt;
W

acho que não fui claro. quis dizer HTML, quando disse código.

N

Este é o pseudo-HTML [vamos chamar assim] do ASP.NET.

o <asp:GridView> do ASP.NET equivale ao <table> do HTML.
o <asp:TemplateField> do ASP.NET equivale aos <td> e <tr> do HTML.

Trocando seis por meia dúzia, o código HTML ficaria algo como:

&lt;table&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;input type="checkbox" /&gt;&lt;/td&gt;
        	&lt;td colspan="2"&gt;01/05/2011 -  08:00  11:59  13:02  17:10&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
        	&lt;td&gt;&lt;/td&gt;
            &lt;td&gt;
            	&lt;table&gt;
                	&lt;tr&gt;
                    	&lt;td &gt;Ocorrência 1&lt;/td&gt;
                        &lt;td&gt;00:40min&lt;/td&gt;
                    &lt;/tr&gt;
                    
                    &lt;tr&gt;
                    	&lt;td &gt;Ocorrência 2&lt;/td&gt;
                        &lt;td&gt;00:15min&lt;/td&gt;
                    &lt;/tr&gt;
                    
                &lt;/table&gt;
            &lt;/td&gt;
        &lt;/tr&gt;        
    &lt;/table&gt;

O problema em questão é: como eu consigo alinhar essa table de dentro à direita da coluna de cima?
A linha com a checkbox fica alinhada à esquerda e a tabela com as ocorrências fica alinhada, dentro da sua <td>, à direita.
Não tô conseguindo fazer isso…

W

mais ou menos assim:

&lt;style type="text/css"&gt;
	.apontamentos {
		border-collapse: collapse;
		width: 400px;
	}

	.data {
		border: #000 1px solid;
		padding: 10px;
		text-align: center;
		width: 100px;
	}

	.apontamento {
		border: #000 1px solid;
		padding: 10px;
	}

	.ocorrencias {
		border: #000 1px solid;
		padding: 10px
	}

	.ocorrencias-table { /* trocar por um nome melhor */
		border-collapse: collapse
	}

	.observacao {
		font-weight: bold;
		padding-left: 50px;
		width: 250px
	}

	.verde {
		color: green
	}

	.vermelho {
		color: red
	}
&lt;/style&gt;

&lt;table class="apontamentos"&gt;
	&lt;tr&gt;
		&lt;td class="data"&gt;01/05/2011&lt;/td&gt;
		&lt;td class="apontamento"&gt;08:00 11:59 13:02 17:10&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td class="ocorrencias"&gt;
			&lt;table class="ocorrencias-table"&gt;
				&lt;tr&gt;
					&lt;td class="observacao"&gt;Uma ocorrência&lt;/td&gt;
					&lt;td class="verde"&gt;00:40min&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td class="observacao"&gt;Outra ocorrência&lt;/td&gt;
					&lt;td class="vermelho"&gt;00:15min&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class="data"&gt;01/05/2011&lt;/td&gt;
		&lt;td class="apontamento"&gt;08:00 11:59 13:02 17:10&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td class="ocorrencias"&gt;
			&lt;table class="ocorrencias-table"&gt;
				&lt;tr&gt;
					&lt;td class="observacao"&gt;Uma ocorrência&lt;/td&gt;
					&lt;td class="verde"&gt;00:40min&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
note que alterei um pouco a estrutura da tabela para facilitar a criação do estilo.
N

wbds, valeu pela resposta!
Eu vou fazer os testes aqui e dou um reply pra você, abraço!

Criado 7 de agosto de 2011
Ultima resposta 10 de ago. de 2011
Respostas 7
Participantes 2