Jak całkowicie usunąć obramowanie z tabeli HTML

141

Moim celem jest stworzenie strony HTML podobnej do „ramki na zdjęcia”. Innymi słowy, chcę zrobić pustą stronę otoczoną 4 obrazkami.

To jest mój kod:

<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>

A klasy CSS są następujące:

.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');       
}

Mój problem polega na tym, że między komórkami tabeli pojawiają się cienkie białe linie, chodzi mi o to, że obramowanie zdjęć nie jest ciągłe. Jak mogę uniknąć tych spacji?

yazanpro
źródło

Odpowiedzi:

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

A w css:

table {border: none;}

EDYCJA: Jak zauważył iGEL, to rozwiązanie jest oficjalnie przestarzałe (chociaż nadal działa), więc jeśli zaczynasz od zera, powinieneś skorzystać z rozwiązania jnpcl border-collapse.

Jak dotąd nie podoba mi się ta zmiana (nie pracuję tak często z tabelami). To sprawia, że ​​niektóre zadania są nieco bardziej skomplikowane. Np. Gdy chcesz zawrzeć dwie różne obramowania w tym samym miejscu (wizualnie), podczas gdy jedna jest NA GÓRZE w jednym rzędzie, a druga na DOLE w drugim. Zawalą się (= zostanie wyświetlony tylko jeden z nich). Następnie musisz zbadać, w jaki sposób obliczany jest „priorytet” obramowania i jakie style obramowania są „silniejsze” (podwójne czy pełne itp.).

Podobało mi się to:

<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;}

Teraz, w przypadku zwinięcia obramowania, to nie zadziała, ponieważ zawsze jest usuwane jedno obramowanie. Muszę to zrobić w inny sposób (rozwiązań jest więcej). Jedną z możliwości jest użycie CSS3 z 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>

Możesz także użyć stylu obramowania „groove | ridge | inset | outset” z pojedynczym obramowaniem. Ale dla mnie to nie jest optymalne, ponieważ nie mogę kontrolować obu kolorów.

Może jest jakieś proste i fajne rozwiązanie na zawalenie granic, ale jeszcze go nie widziałem i szczerze mówiąc nie spędziłem nad tym zbyt wiele czasu. Może ktoś tutaj będzie mógł mi / nas pokazać;)

Damb
źródło
7
cellspacing i cellpadding są przestarzałe od 1999 roku, zobacz developer.mozilla.org/en-US/docs/HTML/Element/table - Powinieneś wybrać rozwiązanie @jnpcl.
iGEL,
iGEL ma rację, zredagowałem odpowiedź. Szczerze mówiąc, byłem zaskoczony, że jest przestarzały przez tak długi czas i nadal z niego korzystałem bez żadnych problemów :)
Damb
91
table {
    border-collapse: collapse;
}
popychadło
źródło
Udało się
19

Dla mnie musiałem zrobić coś takiego, aby całkowicie usunąć obramowania ze stołu i wszystkich komórek. Nie wymaga to w ogóle modyfikowania HTML, co było pomocne w moim przypadku.

table, tr, td {
    border: none;
}
sean.boyer
źródło
3
Wypróbowałem każdą sugestię do tej pory i ostatecznie border: nonezastosowałem do tdprzekonanego jekylla, aby zrobić stół bez granic:<td markdown="span" style="padding: 0.5vw; border: none; max-width:100%; max-height:10%; background: transparent;">
Avio
16

W środowisku bootstrap żadna z najpopularniejszych odpowiedzi nie pomogła, ale zastosowanie następujących zasad usunęło wszystkie granice:

.noBorder {
    border:none !important;
}

Stosowany jako:

<td class="noBorder">
Stephan
źródło
1
Ta sugestia zadziałała dla mnie w Wordpress. Miałem trudności z uzyskaniem żadnej granicy, która mogłaby być egzekwowana.
robbpriestley,
7

W środowisku bootstrap oto moje rozwiązanie:

    <table style="border-collapse: collapse; border: none;">
        <tr style="border: none;">
            <td style="border: none;">
            </td>
        </tr>
    </table>    
KLMN
źródło
4

Oto, co rozwiązało problem dla mnie:

W tagu HTML tr dodaj to:

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

Spowodowało to usunięcie wszystkich granic wyświetlanych w wierszu tabeli.

Khozanai
źródło