<table>
<tr>
<td>Test</td>
<td>A long string blah blah blah</td>
</tr>
</table>
<style>
td{max-width:67%;}
</style>
Powyższe nie działa. Jak ustawić maksymalną szerokość komórki tabeli za pomocą wartości procentowych?
<table>
<tr>
<td>Test</td>
<td>A long string blah blah blah</td>
</tr>
</table>
<style>
td{max-width:67%;}
</style>
Powyższe nie działa. Jak ustawić maksymalną szerokość komórki tabeli za pomocą wartości procentowych?
Odpowiedzi:
Zgodnie z definicją max-width w specyfikacji CSS 2.1, „wpływ„ min-width ”i„ max-width ”na tabele, tabele wbudowane, komórki tabel, kolumny tabel i grupy kolumn jest nieokreślony.” Więc nie możesz bezpośrednio ustawić max-width w elemencie td.
Jeśli chcesz, aby druga kolumna zajmowała najwyżej 67%, możesz ustawić szerokość (która jest w efekcie minimalną szerokością dla komórek tabeli) na 33%, np. W przykładzie
td:first-child { width: 33% ;}
Ustawienie tego dla obu kolumn nie zadziała zbyt dobrze, ponieważ zwykle powoduje, że przeglądarki nadają kolumnom równą szerokość.
Stare pytanie, które znam, ale jest to teraz możliwe przy użyciu właściwości css table-layout: fixed
w tagu tabeli. Odpowiedź poniżej na to pytanie Procentowa szerokość CSS i przepełnienie tekstu w komórce tabeli
Można to łatwo zrobić za pomocą table-layout: fixed
, ale jest to trochę skomplikowane, ponieważ niewiele osób wie o tej właściwości CSS.
table {
width: 100%;
table-layout: fixed;
}
Zobacz to w akcji na zaktualizowanych skrzypcach tutaj: http://jsfiddle.net/Fm5bM/4/
max-width
w tym jsfiddle, szerokość pozostanie taka sama, więc to nie jest to, max-width
co ją ustawia. Może to być bardziej zrozumiałe, jeśli zastąpisz go jako max-width: 10%
pierwszy td
... zobaczysz, że się nie zmienia. jsfiddle.net/w3f8ey22/1
Wiem, że to dosłownie rok później, ale pomyślałem, że się tym podzielę. Próbowałem zrobić to samo i znalazłem to rozwiązanie, które działało dla mnie. Ustawiliśmy maksymalną szerokość dla całego stołu, a następnie pracowaliśmy z rozmiarami komórek, aby uzyskać pożądany efekt.
Umieść tabelę we własnym elemencie div, a następnie ustaw szerokość, minimalną szerokość i / lub maksymalną szerokość elementu div zgodnie z potrzebami dla całej tabeli. Następnie możesz pracować i ustawić szerokość i minimalną szerokość dla innych komórek oraz maksymalną szerokość elementu div, efektywnie pracującego dookoła i do tyłu, aby osiągnąć maksymalną szerokość, jaką chcieliśmy.
<div id="tablediv">
<table width="100%">
<tr>
<td class="tdleft">Test</td>
<td>A long string blah blah blah</td>
</tr>
</table>
</div>
Następnie w swoich stylach umieść:
#tablediv {
width:90%;
min-width:800px
max-width:1500px;
}
.tdleft {
width:20%;
min-width:200px;
}
Wprawdzie nie daje to „maksymalnej” szerokości komórki jako takiej, ale pozwala na pewną kontrolę, która może działać zamiast takiej opcji. Nie jestem pewien, czy będzie działać na Twoje potrzeby. Wiem, że zadziałało w naszej sytuacji, w której chcemy, aby strona nawigacji na stronie była skalowana w górę iw dół do pewnego punktu, ale w dzisiejszych czasach na wszystkich szerokich ekranach.