Usuwanie niechcianych granic komórek tabeli za pomocą CSS

91

Mam osobliwy i frustrujący problem. Aby uzyskać prosty znacznik:

<table>
    <thead>
        <tr><th>1</th><th>2</th><th>3</th></tr>
     </thead>
    <tbody>
        <tr><td>a</td><td>b></td><td>c</td></tr>
        <tr class='odd'><td>x</td><td>y</td><td>z</td></tr>
    </tbody>
</table>

Stosuję różne wartości koloru tła do nieparzystych elementów thead , tr i tr . Problem polega na tym, że w większości przeglądarek każda komórka ma niepożądane obramowanie, które nie jest kolorem żadnego z wierszy tabeli. Tylko w przeglądarce Firefox 3.5 tabela nie ma obramowań w żadnej komórce.

Chciałbym tylko wiedzieć, jak usunąć te obramowania w innych głównych przeglądarkach, aby jedyną rzeczą, którą widzisz w tabeli, były naprzemienne kolory wierszy.

Pion
źródło
2
Dziękujemy wszystkim, którzy zasugerowali dodanie border-collapse: collapse do CSS. Zrobiło to.
Bob

Odpowiedzi:

212

Musisz dodać to do swojego CSS:

table { border-collapse:collapse }
Doug Neiner
źródło
13
Zauważ, że musi to być zastosowane do tabeli , a nie do td . Właśnie popełniłem ten błąd i spędziłem ponad pół godziny, próbując dowiedzieć się, dlaczego to nie działa.
javawizard,
16

dodaj trochę css:

td, th {
   border:none;
}
Dave Markle
źródło
1
nie działa dla mnie na chrome 60.0.3112.113 po zastosowaniu do stołu
Abdullah Gheith
15

Zmodyfikuj swój kod HTML w ten sposób:

<table border="0" cellpadding="0" cellspacing="0">
    <thead>
        <tr><td>1</td><td>2</td><td>3</td></tr>
     </thead>
    <tbody>
        <tr><td>a</td><td>b></td><td>c</td></tr>
        <tr class='odd'><td>x</td><td>y</td><td>z</td></tr>
    </tbody>
</table>

(Dodałem border="0" cellpadding="0" cellspacing="0" )

W CSS możesz wykonać następujące czynności:

table {
    border-collapse: collapse;
}
Gabriel McAdams
źródło
12

aby usunąć obramowanie, po prostu użyj css w ten sposób:

td {
 border-style : hidden!important;
}
Amine_Dev
źródło
8

Ustaw cellspacingatrybut tabeli na 0.

Możesz także użyć stylu CSS border-spacing: 0, ale tylko wtedy, gdy nie potrzebujesz obsługi starszych wersji IE.

SLaks
źródło
1

Możesz także dodać

table td { border:0; }

powyższe jest równoważne ustawieniu cellpadding = "0"

usuwa wypełnienie automatycznie dodawane do komórek przez przeglądarki, które mogą zależeć od typu dokumentu i / lub dowolnego kodu CSS używanego do resetowania domyślnych stylów przeglądarki

falc0n
źródło
1
Cellpadding to przestrzeń między zawartością tabeli a jej granicami td{padding:X}. Odstępy między komórkami to przestrzeń między obrzeżami każdej komórki („margines” między granicami komórek). Możesz ustawić, border-collapseaby naśladować działanie cellspacingatrybutu na tagu tabeli, ale nie jest to niezawodne.
MetalFrog
1

Po wypróbowaniu powyższych sugestii jedyną rzeczą, która zadziałała, była zmiana atrybutu obramowania na „0” w kolejnych sekcjach pliku style.css motywu podrzędnego (wykonaj operację „Znajdź”, aby zlokalizować każdy z nich - poniżej przedstawiono tylko fragmenty):

.comment-content table {
    border-bottom: 1px solid #ddd;

.comment-content td {
    border-top: 1px solid #ddd;
    padding: 6px 10px 6px 0;
}

Wygląda więc później tak:

.comment-content table {
    border-bottom: 0;

.comment-content td {
    border-top: 0;
    padding: 6px 10px 6px 0;
}
Jessica Escobar
źródło
0

Spróbuj przypisać styl border: 0px; border-collapse: collapse;elementowi tabeli.

Josh Anderson
źródło
3
@Josh, prawda border: none?
Doug Neiner,
@DougNeiner Stary post, ale żaden i 0 nie są jednakowo poprawne. Lubię 0, bo muszę mniej pisać :)
Scott Simontis
-1

czasami nawet po wyczyszczeniu borders.

Powodem jest to, że masz obrazy w środku td, nadawanie obrazów display:blockrozwiązuje problem.

bresleveloper
źródło