Nie widać obramowania wokół elementu tr?

110

Wygląda na to, że Chrome / Firefox nie renderuje obramowań tr, ale renderuje obramowanie, jeśli selektor jest table tr td.

Jak ustawić granicę na tr?

Moja próba, która nie działa:

table tr {
  border: 1px solid black;
}
<table>
  <tbody>
    <tr>
      <td>
        Text
      </td>
    </tr>
  </tbody>
</table>

http://jsfiddle.net/edi9999/VzPN2/

To jest podobne pytanie: Ustaw obramowanie na tabelę tr, działa we wszystkim oprócz IE 6 i 7 , ale wydaje się, że działa wszędzie z wyjątkiem IE.

edi9999
źródło
2
Używam przeglądarki Firefox i nie widzę obramowania
Speedysnail6

Odpowiedzi:

258

Dodaj to do arkusza stylów:

table {
  border-collapse: collapse;
}

JSFiddle .

Powód, dla którego zachowuje się w ten sposób, jest właściwie opisany w specyfikacji :

Istnieją dwa różne modele ustawiania obramowań komórek tabeli w CSS. Jedna jest najbardziej odpowiednia dla tak zwanych oddzielnych obramowań wokół pojedynczych komórek, druga jest odpowiednia dla obramowań ciągłych od jednego końca tabeli do drugiego.

... i później, do collapseustawienia:

W modelu zwijanej obramowania można określić obramowanie otaczające całość lub część komórki, wiersza, grupy wierszy, kolumny i grupy kolumn.

raina77ow
źródło
2
Dlaczego dokładnie ta granica była ukryta?
edi9999,
4
Ponieważ tak separate- domyślnie - działa model obramowania tabeli: określasz obramowanie dla każdej komórki. Zaktualizuję odpowiedź cytatami z dokumentacji.
raina77ow
1
@ edi9999 - Zalecam użycie resetowania arkusza stylów. Sprawdź to http://www.cssreset.com/
Black Sheep
2
Konkretnym wyjaśnieniem, dlaczego obramowanie zostało ukryte, jest to stwierdzenie w cytowanej specyfikacji CSS, przedstawione jako mające zastosowanie w modelu oddzielnych granic: „Wiersze, kolumny, grupy wierszy i grupy kolumn nie mogą mieć obramowań (tj. Programy użytkownika muszą ignorować obramowanie właściwości tych elementów). ”
Jukka K. Korpela
Pomogło granie z twoim skrzypkiem, dzięki;)
Zeek2