Tutaj jest ten sam problem .
Trzeba ustawić table-layout:fixed
i odpowiedniej szerokości elementu na stole, jak overflow:hidden
i white-space: nowrap
na komórkach tabeli.
Przykłady
Kolumny o stałej szerokości
Szerokość tabeli musi być taka sama (lub mniejsza) niż komórki o stałej szerokości.
Z jedną kolumną o stałej szerokości:
* {
box-sizing: border-box;
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
max-width: 100px;
}
td {
background: #F00;
padding: 20px;
overflow: hidden;
white-space: nowrap;
width: 100px;
border: solid 1px #000;
}
<table>
<tbody>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
</tbody>
</table>
Z wieloma kolumnami o stałej szerokości:
* {
box-sizing: border-box;
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
max-width: 200px;
}
td {
background: #F00;
padding: 20px;
overflow: hidden;
white-space: nowrap;
width: 100px;
border: solid 1px #000;
}
<table>
<tbody>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
</tbody>
</table>
Kolumny o stałej i płynnej szerokości
Należy ustawić szerokość stołu , ale każda dodatkowa szerokość jest po prostu pobierana przez komórki płynu.
Z wieloma kolumnami, stałą szerokością i płynną szerokością:
* {
box-sizing: border-box;
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
}
td {
background: #F00;
padding: 20px;
border: solid 1px #000;
}
tr td:first-child {
overflow: hidden;
white-space: nowrap;
width: 100px;
}
<table>
<tbody>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
</tbody>
</table>
vertical-align:middle
i nawet dodanie go do DIV nie rozwiązuje problemu.Zastosuj CSS
table-layout:fixed;
(i czasamiwidth:<any px or %>
) do TABLE iwhite-space: nowrap; overflow: hidden;
styl na TD. Następnie ustaw szerokości CSS na odpowiednich elementach komórki lub kolumny.Co ważne, szerokości kolumn tabeli o stałym układzie są określane przez szerokości komórek w pierwszym wierszu tabeli. Jeśli w pierwszym wierszu znajdują się elementy TH, a szerokości są stosowane do TD (a nie TH), wówczas szerokość dotyczy tylko zawartości TD (odstępy i przepełnienie można zignorować); kolumny tabeli będą dystrybuowane równomiernie niezależnie od ustawionej szerokości TD (ponieważ nie określono szerokości [na TH w pierwszym wierszu]), a kolumny będą miały [obliczone] równe szerokości; tabela nie przeliczy szerokości kolumny na podstawie szerokości TD w kolejnych wierszach. Ustaw szerokość pierwszych elementów komórki, które napotka tabela.
Alternatywnie i najbezpieczniejszym sposobem ustawienia szerokości kolumn jest użycie
<COLGROUP>
oraz<COL>
tagi w tabeli z CSS szerokość zestawu na każdej stałej szerokości COL. CSS związany z szerokością komórki działa lepiej, gdy tabela zna z wyprzedzeniem szerokości kolumn.źródło
Nie jestem zaznajomiony z konkretnym problemem, ale możesz umieścić element div itp. W td i ustawić na nim przepełnienie.
źródło
Oto rozwiązanie dla Ciebie, ale nie bardzo rozumiem, dlaczego to działa:
Mianowicie zawijanie zawartości komórki w element div.
źródło
overflow:hidden
można go usunąćtd
, a szerokośćdiv
można ustawić na 100%, aby działała z dowolnątd
szerokością (w tym automatycznie dopasowywaną!)Najlepszym rozwiązaniem jest umieszczenie elementu div w komórce tabeli o zerowej szerokości. Komórki tabeli Tbody odziedziczą swoje szerokości z szerokości zdefiniowanych w thead. Pozycja: względny i ujemny margines powinien załatwić sprawę!
Oto zrzut ekranu: https://flic.kr/p/nvRs4j
źródło
Będziesz musiał ustawić atrybuty stylu tabeli:
width
itable-layout: fixed;
pozostawić opcję „overflow: hidden;” atrybut działa poprawnie.Imo to działa lepiej niż używanie elementów div z
width
atrybutem style, zwłaszcza gdy używasz go do dynamicznych obliczeń zmiany rozmiaru, tabela będzie miała prostszy DOM, co ułatwia manipulację, ponieważ nie są wymagane korekty dopełnienia i marginesówDodatkowo nie musisz ustawiać szerokości dla wszystkich komórek, ale tylko dla komórek w pierwszym rzędzie.
Lubię to:
źródło
Właśnie miałem podobny problem i musiałem najpierw użyć
<div>
wnętrza<td>
(rozwiązanie Johna MacIntyre'a nie zadziałało dla mnie z różnych powodów).Zwróć jednak uwagę, że
<td><div>...</div></td>
to nie jest prawidłowe miejsce docelowe dla elementu div, więc zamiast tego używam<span>
zdisplay:block;
zestawem. Sprawdza się teraz dobrze i działa.źródło
Najłatwiejsze i najprostsze rozwiązanie, które działa:
źródło
aby uprościć, proponuję umieścić obszar tekstowy wewnątrz td, który automatycznie zarządza przepełnieniem
<td><textarea autofocus>$post_title</textarea></td>
wymagają poprawy
źródło
wyświetla 123456
źródło