2010-05-07 13 views
18

To klasyczny problem - gdy masz pustą komórkę tabeli, przeglądarka nie renderuje obramowań wokół niej. Istnieją również dwa dobrze znane rozwiązania. Jednym z nich jest umieszczenie   w komórce tabeli; drugim jest użycie właściwości CSS empty-cells:show.Lepsza alternatywa niż   do wyświetlania pustych komórek tabeli HTML?

Niestety oba mają wady.   jest trochę brzydki, jeśli chodzi o zaznaczanie tekstu i kopiowanie - wklejanie go. Dostajesz dużo przestrzeni, w których nie powinno być żadnych, może nawet z egzotyczną postacią Unicode. empty-cells:show powinien rozwiązać dokładnie ten problem, ale niestety działa poprawnie tylko w IE, począwszy od wersji 8 (a następnie tylko w trybie zgodnym ze standardami). Można go użyć do pracy w innych wersjach, podając także border-collapse: collapse, ale czasami NIE jest to pożądane. W moim przypadku mam dość złożoną tabelę i opiera się ona na border-collapse:separate i w przeciwnym razie tworzyłby dość niechlujną zupę CSS/HTML.

Co jeszcze można umieścić w komórce tabeli, która spowodowałaby, że IE narysuje krawędzie, ale nie są widoczne lub można je skopiować? Dla wszystkich innych przeglądarek empty-cells:show robi już sztuczkę, więc naprawdę muszę oszukać IE.

Odpowiedz

12

Można również umieścić niewidoczny elementu BR:

<td><br style="visibility:hidden"></td> 

To śmieszne ilość zbędnego kodu, ale to sprawia, że ​​podstęp - bez dodatkowego tekstu jeszcze wyświetlana jest komórka.

Należy pamiętać, że <br/> jest nieprawidłową składnią HTML zgodnie z oficjalnymi specyfikacjami http://www.w3.org/TR/html401/struct/text.html#edef-BR. Jest to jednak poprawna składnia XHTML.

+1

Oczywiście można zdefiniować klasę CSS .e {visibility: hidden} i napisać
class="e", albo, alternatywnie, jeśli nie mają inne znaczenie br elementy w tabeli, zdefiniuj styl "tabela br {widoczność: ukryta}" –

+0

Jak działa
od
? Obie alokują spację i oba nie wyświetlają nic innego. – Alohci

+0

Spróbuj wybrać zawartość komórki tabeli w IE6 z widocznością ustawioną jako ukryta i bez niej. Gdy jest ustawiony, komórka nie wydaje się być wybrana (przynajmniej wizualnie). To jest dokładnie to, o co prosiła osoba, która zadała pytanie. –

2

Możesz pokazać komórki za pomocą tego kodu CSS. Z powodzeniem przetestowałem go w Safari i Firefox. Myślę, że działa również w innych przeglądarkach.

table { 
 
    width: 100%; 
 
    border: 0; 
 
    empty-cells: show; 
 
} 
 
td { 
 
    border: 1px solid grey; 
 
} 
 
td:empty:after { 
 
    content: '.'; 
 
    color: transparent; 
 
    visibility: hidden; 
 
} 
 
/* alternate background */ 
 

 
tr:nth-child(odd) td { 
 
    background: rgba(0, 0, 0, 0.2); 
 
} 
 
tr:nth-child(even) td { 
 
    background: rgba(0, 0, 0, 0.1); 
 
}
<table> 
 
    <tr> 
 
    <td>Row</td> 
 
    <td>1</td> 
 
    </tr> 
 
    <tr> 
 
    <td></td> 
 
    <td></td> 
 
    </tr> 
 
    <tr> 
 
    <td>Row</td> 
 
    <td>3</td> 
 
    </tr> 
 
</table>

+0

To pytanie zostało zadane 5 lat temu, a problemem był konkretnie IE7, który nie respektował "pustych komórek: pokazu". : P –

+0

Ten wątek pojawił się w google, gdy szukałem rozwiązania. 'empty-cells: show' nie działa ani w Safari ani w Firefoxie, gdy wszystkie komórki w wierszu są puste. Jestem pewien, że pomoże to innym. –

+0

Może, ale wątpię w to. :(Pytanie brzmi o czymś zupełnie innym –

Powiązane problemy