Zobacz ten JSFIDDLE
td.rhead { width: 300px; }
Dlaczego szerokość CSS nie działa?
<table>
<thead>
<tr>
<td class="rhead">need 300px</td>
<td colspan="7">Week #0</td>
<td colspan="7">Week #1</td>
<!-- etc..-->
</tr>
<tr>
<td class="rhead"></td>
<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>
<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>
<!-- etc... -->
</tr>
<thead>
</table>
Jakie są również skutki położenia: ustalone, bezwzględne itp. Na szerokości td, jeśli takie istnieją? Szukam powodu bardziej niż poprawki. Mam nadzieję, że zrozumiem, jak to działa.
html
css
html-table
Jake
źródło
źródło
display: table-cell
nie szanujewidth
(w taki sam sposób, w jaki by to nie działałodisplay: inline
). Nie rozumiem, o co pytaszposition fixed|absolute
Odpowiedzi:
To może nie być to, co chcesz usłyszeć, ale
display: table-cell
nie uwzględnia szerokości i zostanie zwinięte na podstawie szerokości całego stołu. Możesz to łatwo obejść, umieszczającdisplay: block
element wewnątrz samej komórki tabeli, której szerokość określasz, npNie powinno to mieć większego znaczenia, czy
<table>
samo jestposition: fixed
bezwzględne, czy też bezwzględne, ponieważ wszystkie pozycje komórek są statyczne względem tabeli.http://jsfiddle.net/ExplosionPIlls/Mkq8L/4/
EDYCJA: Nie mogę wziąć kredytu, ale jak mówią komentarze, możesz
min-width
zamiast tego użyć zamiastwidth
komórki tabeli.źródło
min-width
naTD
nie wydają się działać w Chrome i FF: jsfiddle.net/Mkq8L/7min-width: 300px
działa! (@TimMedora byłeś kilka sekund szybszy!)min-width
nie ma problemu, weź największy.Lepiej jest używać
table-layout: fixed
Wartością domyślną jest Auto, a przy dużych tabelach może powodować pewne opóźnienie po stronie klienta, gdy przeglądarka iteruje ją, aby sprawdzić, czy wszystkie rozmiary pasują.
Naprawiono jest znacznie lepsze i szybciej wyświetla się na stronie. Struktura tabeli jest zależna od całkowitej szerokości tabel i szerokości każdej z kolumn.
Tutaj jest to zastosowane do oryginalnego przykładu: JSFIDDLE , Zauważysz , że pozostałe kolumny są zgniecione i zachodzą na swoją zawartość. Możemy to naprawić, używając więcej CSS (wszystko, co musiałem zrobić, to dodać klasę do pierwszego TR):
Widziany w akcji tutaj: JSFIDDLE
źródło
Powodem, dla którego nie działa w podanym łączu, jest to, że próbujesz wyświetlić kolumnę 300px PLUS 52 kolumny, każda z 7 kolumn. Zmniejsz liczbę kolumn i działa. Nie możesz zmieścić tylu na ekranie.
Jeśli chcesz wymusić dopasowanie kolumn, spróbuj ustawić:
zobacz mój jsfiddle: http://jsfiddle.net/Mkq8L/6/ @mike Nie mogę jeszcze komentować.
źródło
Powodem jest to, że nie określiłeś szerokości tabeli, a cała masa td jest przepełniona.
Na przykład dałem tabeli szerokość 5000 pikseli, co moim zdaniem będzie pasować do twoich wymagań.
Jest to dokładnie ten sam kod, który podałeś, a ja po prostu dodałem do szerokości tabeli.
Wierzę, że to, co się dzieje, jest spowodowane tym, że twoje TD są daleko poza domyślną szerokością tabeli. Co możesz zobaczyć, jeśli wyciągniesz około 45 swoich td w każdym tr, (tj. Kod, który podałeś w swoim pytaniu, a nie jsfiddle), działa dokładnie dobrze
źródło
Spróbuj to działa.
źródło
Spróbuj użyć
Jeśli używasz Bootstrap, klasa
table
matable-layout: fixed;
domyślnie.źródło
Użyj właściwości układu tabeli i „stałej” wartości w tabeli.
Po ustawieniu całej szerokości stołu, możesz teraz ustawić szerokość w% td.
Możesz dowiedzieć się więcej na ten temat pod tym linkiem: http://www.w3schools.com/cssref/pr_tab_table-layout.asp
źródło
Moje szalone rozwiązanie.)
źródło
Jeśli szerokość tabeli wynosi na przykład 100%, spróbuj użyć procentowej szerokości td, takiej jak 20%.
źródło
Zawijaj zawartość z pierwszej komórki w div, np. W ten sposób:
HTML:
CSS:
Oto plik jsfiddle .
źródło
Możesz także użyć:
ale będzie to tylko z niektórymi przeglądarkami, jeśli dobrze pamiętam, IE8 na to nie pozwala. Ogólnie rzecz biorąc, bezpieczniej jest po prostu umieścić
width=""
atrybut w<td>
sobie.źródło