Como remover completamente as bordas da tabela HTML

141

Meu objetivo é criar uma página HTML semelhante a uma "moldura". Em outras palavras, quero criar uma página em branco cercada por 4 fotos.

Este é o meu código:

<table>
    <tr>
        <td class="bTop" colspan="3">
        </td>
    </tr>
    <tr>
        <td class="bLeft">
        </td>
        <td class="middle">
        </td>
        <td class="bRight">
        </td>
    </tr>
    <tr>
        <td class="bBottom" colspan="3">
        </td>
    </tr>                                                    
</table>

E as classes CSS são as seguintes:

.bTop
{
    width: 960px;
    height: 111px;
    background-image: url('../Images/BackTop.jpg');
}
.bLeft
{
    width: 212px;
    height: 280px;
    background-image: url('../Images/BackLeft.jpg');    

}

.middle
{
    width: 536px;
    height: 280px;
}

.bRight
{
    width: 212px;
    height: 280px;
    background-image: url('../Images/BackRight.jpg');    
}

.bBottom
{        
    width: 960px;
    height: 111px;
    background-image: url('../Images/BackBottom.jpg');       
}

Meu problema é que estou recebendo finas linhas brancas entre as células da tabela; quero dizer que a borda das imagens não é contínua. Como posso evitar esses espaços em branco?

yazanpro
fonte

Respostas:

179
<table cellspacing="0" cellpadding="0">

E em css:

table {border: none;}

EDIT: Como o iGEL observou, esta solução foi oficialmente descontinuada (ainda funciona), portanto, se você está começando do zero, deve seguir a solução de colapso de borda do jnpcl.

Na verdade, até agora não gosto muito dessa alteração (não trabalhe com tabelas com tanta frequência). Isso torna algumas tarefas um pouco mais complicadas. Por exemplo, quando você deseja incluir duas bordas diferentes no mesmo local (visualmente), enquanto uma é TOP para uma linha e a segunda é BOTTOM para outra linha. Eles entrarão em colapso (= apenas um deles será mostrado). Depois, você deve estudar como é calculada a "prioridade" da borda e quais estilos de borda são "mais fortes" (duplo vs. sólido etc.).

Eu fiz assim:

<table cellspacing="0" cellpadding="0">
  <tr>
    <td class="first">first row</td>
  </tr>
  <tr>
    <td class="second">second row</td>
  </tr>
</table>

----------

.first {border-bottom:1px solid #EEE;}
.second {border-top:1px solid #CCC;}

Agora, com o colapso da borda, isso não funcionará, pois sempre há uma borda removida. Eu tenho que fazer isso de alguma outra maneira (existem mais soluções ofc). Uma possibilidade é usar CSS3 com box-shadow:

<table class="tab">
  <tr>
    <td class="first">first row</td>
  </tr>
  <tr>
    <td class="second">second row</td>
  </tr>
</table>​​​

<style>
.tab {border-collapse:collapse;}
.tab .first {border-bottom:1px solid #EEE;}
.tab .second {border-top:1px solid #CCC;box-shadow: inset 0 1px 0 #CCC;}​
</style>

Você também pode usar algo como o estilo de borda "groove | cume | inset | outset" com apenas uma borda. Mas para mim, isso não é o ideal, porque não posso controlar as duas cores.

Talvez exista alguma solução simples e agradável para o colapso de fronteiras, mas ainda não a vi e honestamente não gastei muito tempo com isso. Talvez alguém aqui possa me mostrar;)

Damb
fonte
7
cellpacing e cellpadding estão obsoletos desde 1999, consulte developer.mozilla.org/en-US/docs/HTML/Element/table - Você deve usar a solução @jnpcl.
iGEL
O iGEL está certo, editei minha resposta. Honestamente, fiquei surpreso, que está obsoleta por um longo tempo e eu ainda estava usando-o sem problemas :)
Damb
91
table {
    border-collapse: collapse;
}
drudge
fonte
Funcionou perfeitamente graças
Vikas Kandari 27/06
19

Para mim, eu precisava fazer algo assim para remover completamente as bordas da tabela e de todas as células. Isso não requer modificação do HTML, o que foi útil no meu caso.

table, tr, td {
    border: none;
}
sean.boyer
fonte
3
Tentei todas as sugestões até aqui, e finalmente border: noneaplicada a tdjekyll convencido a fazer uma tabela sem fronteiras:<td markdown="span" style="padding: 0.5vw; border: none; max-width:100%; max-height:10%; background: transparent;">
Avio
16

Em um ambiente de inicialização, nenhuma das principais respostas ajudou, mas a aplicação do seguinte removeu todas as bordas:

.noBorder {
    border:none !important;
}

Aplicado como:

<td class="noBorder">
Stephan
fonte
1
Esta sugestão funcionou para mim no Wordpress. Eu estava tendo dificuldade em conseguir que a fronteira não fosse aplicada.
22416 Robbpriestley #
7

Em um ambiente de inicialização, aqui está minha solução:

    <table style="border-collapse: collapse; border: none;">
        <tr style="border: none;">
            <td style="border: none;">
            </td>
        </tr>
    </table>    
KLMN
fonte
4

Isto é o que resolveu o problema para mim:

Na sua tag tr HTML, adicione este:

style="border-collapse: collapse; border: none;"

Isso removeu todas as bordas exibidas na linha da tabela.

Khozanai
fonte