Mam prostą tabelę używaną do skrzynki odbiorczej w następujący sposób:
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
Jak ustawić szerokość, aby Od i Data stanowiły 15% szerokości strony, a Temat - 70%. Chcę też, aby tabela zajmowała całą szerokość strony.
html
css
html-table
alamodey
źródło
źródło
width attribute
; używa aCSS *style* width
, co zastąpiło atrybut szerokości <col>. (pomimo wielu osób głosujących za tym komentarzem !!)span="1"
jest zbędny, ponieważ 1 jest wartością domyślną.HTML:
CSS:
Najlepszą praktyką jest oddzielanie kodu HTML i CSS w celu zmniejszenia duplikacji kodu oraz rozdzielenia problemów (HTML dla struktury i semantyki oraz CSS dla prezentacji).
Pamiętaj, że aby działało to w starszych wersjach Internet Explorera, może być konieczne nadanie tabeli określonej szerokości (np. 900 pikseli). Ta przeglądarka ma pewne problemy z renderowaniem elementu o wymiarach procentowych, jeśli jego opakowanie nie ma dokładnych wymiarów.
źródło
Skorzystaj z poniższego CSS, pierwsza deklaracja zapewni, że twoja tabela będzie trzymać się podanych przez ciebie szerokości (musisz dodać klasy w swoim HTML):
źródło
table{table-layout:fixed};.from,.date{width:15%}
wystarczy. O ile klasy nie są używane również w innych elementach, pisanieth.from
jest zbędne i można je skrócić do sprawiedliwego.from
.Alternatywny sposób z tylko jedną klasą przy jednoczesnym zachowaniu stylów w pliku CSS, który działa nawet w IE7:
Niedawno możesz także użyć
nth-child()
selektora z CSS3 (IE9 +), w którym po prostu wstawiłeś nr. odpowiedniej kolumny w nawiasie zamiast ciągnąć je razem z sąsiednim selektorem. W ten sposób na przykład:źródło
:nth-child
rozwiązanie jest okropne pod względem wydajności. Nie ma żadnego uzasadnionego powodu, aby go używać (zwłaszcza z selektorem uniwersalnym) w tym przykładzie, w którym istnieją tylko trzy elementy (th
lubcol
) do stylu. Ponadto wystarczy ustawić szerokośćth
na pierwszy wiersz..mytable td
W pierwszym przypadku jest zbędny.tr
a następnie, czy należą do.mytable
. Jeśli naprawdę chcesz korzystać z „n-ty”, a następnie coś jak to będzie prawdopodobnie znacznie lepiej:.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
. W tym przypadku nie ma również potrzeby określania szerokości trzeciej kolumny..mytable th+th{width: 70%}.mytable th+th+th{width:15%}
. Same selektory „n-te” mogą być bardzo przydatne, ale w tym konkretnym przypadku (niewielki stół z tylko 3 kolumnami) nie są tak naprawdę potrzebne. Podczas korzystaniatable-layout: fixed
można nawet zrobić tylko to:table{table-layout:fixed}th:first-child+th{width:70%}
.To są moje dwie sugestie.
Korzystanie z zajęć. Nie ma potrzeby określania szerokości dwóch innych kolumn, ponieważ zostaną one automatycznie ustawione na 15% przez przeglądarkę.
Bez korzystania z klas. Trzy różne metody, ale wynik jest identyczny.
za)
b)
c) Ten jest moim ulubionym. To samo co b), ale z lepszą obsługą przeglądarki.
źródło
W zależności od twojego ciała (lub div, który owija twój stół) „ustawień” powinieneś być w stanie to zrobić:
Próbny
źródło
źródło
Próbny
źródło
Spróbuj tego zamiast tego.
źródło
Nie używaj atrybutu border, użyj CSS do wszystkich swoich stylizacji.
Ale osadzanie CSS w ten sposób jest słabą praktyką - zamiast tego należy użyć klas CSS i umieścić reguły CSS w zewnętrznym pliku CSS.
źródło
Oto kolejny minimalny sposób na zrobienie tego w CSS, który działa nawet w starszych przeglądarkach, które nie obsługują
:nth-child
i podobnych selektorach: http://jsfiddle.net/3wZWt/ .HTML:
CSS:
źródło
Dodaj colgroup po tagu tabeli. W tym miejscu określ szerokość i liczbę kolumn. i dodaj tag tbody. Umieść tr w ciele.
źródło
źródło