2016-10-24 16 views
5

Mam podstawowy stół z przewijanym ciałem. Robiąc to musiałem ustawić wyświetlanie thead i tbody: block i ustawiłem również szerokość dla th i td.Stała szerokość pierwszej tabeli tabeli

Z jakiegoś powodu pierwsza kolumna th nie jest wyrównana z pierwszą kolumną tds. Czy ktoś może mi powiedzieć, jakie są tego przyczyny?

CSS

thead, 
tbody { 
    display: block; 
} 

thead { 
    text-align: left; 
} 

tbody { 
    background: yellow; 
    overflow-y: auto; 
    height: 6em; 
} 

thead th, 
tbody td { 
    width: 4em; 
    padding: 2px; 
} 

thead tr th:first-child, 
tbody tr td:first-child { 
    width: 8em; 
    background: salmon; 
    font-weight: normal; 
} 

Oto Fiddle

+0

masz na myśli, że kiedy zawartość jest więcej, pierwsze ma większy rozmiar niż pierwsze td prawo? – demonofthemist

+0

Chcę zachować pierwsze i pierwsze td na tej samej szerokości niezależnie od zawartości – agri

+0

sprawdź moją odpowiedź poniżej – demonofthemist

Odpowiedz

12

Szerokość prpoerty dla DIV & TABLE s działa różnie.

Zastosowanie max-width & min-width aby osiągnąć pożądane wyniki:

thead tr th:first-child, 
tbody tr td:first-child { 
    width: 8em; 
    min-width: 8em; 
    max-width: 8em; 
    word-break: break-all; 
} 

Edit:

(Edycja odpowiedź wyjaśnić funkcjonowanie szerokości w HTML, należy podkreślić, gdybym coś coś złego lub brakowało!)

Właściwość szerokości div służy do definiowania s ize elementu & treść jest dopasowana odpowiednio, niezależnie od rodzica & szerokości rodzeństwa.

Ale w przypadku tabeli, wielkość elementu jest obliczana zgodnie z zawartością, & właściwość width ma niższy priorytet. Uwzględniany jest nawet rozmiar rodzeństwa. Dlatego musimy użyć dodatkowych właściwości, takich jak min-width & max-width, aby wymusić pożądany rozmiar!

+0

Przetestowałem ustawienie maksymalnej szerokości, ale nic nie zmienia. – agri

+0

Zaktualizowałem odpowiedź, zapomniałem wspomnieć o atrybucie min-width, który jest wymagany, gdy zawartość nie przepełnia się 8em! – demonofthemist

+0

tak, to wszystko. Dziękuję Ci. – agri

0

usunąć pierwszą zasadę styl: display: block z TBODY i thead

Dzięki temu jesteś nadrzędnego formatowanie tabel i układ wyświetlający: tabela udostępnia

thead, 
tbody { 
// display: block; 
} 

Fixed

+0

To by to zrobiło, ale chcę zachować tbody przewijane – agri

Powiązane problemy