MozillaPL.org - polskie centrum Mozilli

Główne menu:

Tabela - tekst przełazi do sąsiedniej komórki.

Dyskusje na temat standardów WWW i zgłoszenia stron niedziałających poprawnie w przeglądarkach z rodziny Mozilli (w tym Mozilla Firefox)

Moderator: Pomocy?!

Tabela - tekst przełazi do sąsiedniej komórki.

Postautor: as » 03 lutego 2006, 16:58

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915

Mam dużą tabelę o zmiennych szerokościach kolumn, które muszą być utrzymane. Styl definuję tak:

table {table-layout: fixed; width: 2721}

2721 to suma szerokości w pikselach.

W pierwszym wierszu tabeli określam precyzyjnie szerokości wszystkich komórek (szerokości te złożą się na owe 2721):

<tr valign=top>
<td width="30">&nbsp</td>
<td width="70">coś tam</td>
<td width="70">coś tam dłuższego, z czym mam problem ...</td>
...

Wszystko działa, tylko że w mozilli (ale nie w IE) dłuższe teksty przełażą do następnej komórki i nakładają się się na jej tekst. Jak najprościej obciąć tekst do rozmiarów oczka tabeli? Możliwie z małą ilością kodu, bo plik jest duży.
Dodam, że gdy nie ma elementów stylu table-layout i width efektu przełażenia tekstu nie ma, ale tabela nie trzyma szerokości kolumn.

Bardzo proszę o pomoc
--
A S
as
 

Postautor: Gość » 03 lutego 2006, 18:03

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1

table {table-layout: fixed; width: 2721px}

Zapomniałeś o jednostce. Poza tym jaki jest sens dawać 'table-layout: fixed' jeśli potem określasz szerokość każdej komórki? 'table-layout: fixed' służy do ustalenia przez przeglądarkę jednakowych szerokości komórek w całej tabeli :). Jeśli ustalisz szerokość każdej komórki, to także 'width' dla tabeli jest zbędne.
Gość
 

Postautor: as » 04 lutego 2006, 11:22

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915

cytuje z http://www.kurshtml.boo.pl/index.php

Netscape 7/Mozilla/Firefox i Opera 8 nie stosują algorytmu table-layout: fixed, jeśli jawnie nie zostanie określona szerokość tabeli. W takim przypadku przyjmowany jest algorytm domyślny, tzn. table-layout: auto.

Koniec cytatu.

Jednostki przegapiłem, ale to nic nie daje. Tabela jest obliczona dobrze, rozmiary sztywne, ale większy tekst przełazi do sąsiedniej komórki.

Nie próbowałem clip z podawaniem prostokąta obcinania w każdej komórce <td></td>, bo to niezmiernie powiekszyłoby kod html, bo tabela jest duża i niejednorodna.

Jeśli ktos wie, jak zdefiniować w Mozilli dużą, sztywną tabelę z tekstami obcinanymi w oczkach - bardzo proszę o pomoc. W IE nie ma problemu (obcinanie jest defaultowe).
--
A S
as
 

Postautor: as » 04 lutego 2006, 14:22

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915

HTML to jednak język, opierający się na eksperymencie... Już wiem, jak zrobić dużą tabelę o sztywnych kolumnach (zapewne podobnie i wierszach), działającą w IE i Mozilli.

1. Definiujemy style dla tabeli i jej oczka:

table {table-layout: fixed; width: 2950px}
td {overflow: hidden; white-space: nowrap}


Liczba jest sumaryczną szerokością wszystkich kolumn bez grubości linii. Overflow jest dla Mozilli, która długie teksty nie przycina w oczku, a przeciąga do następnego (co jest bez sensu ...). IE przycina bez zachęcania za pomocą overflow.
nowrap z kolei jest dla IE, który lubi przełamać linię na białym znaku, ale niekoniecznie na nowej linii. Po wprowadzeniu nowrap łamanie linii musi być przez <br> i dobrze pracuje w IE i Mozilli.

2. W pierwszym wierszu wszystkie oczka muszą mieć podaną szerokość. Suma tych szerokości zbiega się do liczby przed chwilą dyskutowanej:

<td style="width:112px>2006-02-18<br>Sob</td>

pozdrawiam
--
A S

as
 

Postautor: Gość » 04 lutego 2006, 20:34

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1

Widzę, że nic z tej lekcji nie zrozumiałeś. Jeśli stosujesz 'table-layout: fixed' nie stosuj szerokości dla komórek. 'table-layout: fixed' ma za zadanie uśrednienie szerokości komórek do jednej wartości, ale wtedy stosujesz 'width' dla tabeli, bo jak słusznie zauważyłeś 'fixed' by nie działał. Jeśli natomiast dajesz WSZYSTKIM komórkom szerokość, to nie ma sensu stosować 'table-layout: fixed' i 'width'!

Zrób sobie eksperyment z tabelą (cellspacing na zero) z określonymi szerokościami komórek i 'table-layout: fixed' oraz 'width'. Usuń 'table-layout: fixed' i jest jakaś różnica? Żadna! Z tej samej tabeli już bez 'table-layout: fixed' usuń 'width', jest jakaś różnica? Żadna!

Wróć do 'table-layout: fixed' oraz 'width', ale usuń szerokości komórek, jest jakaś różnica? JEST!

Teraz już wiesz, czemu stosowanie 'table-layout: fixed' oraz 'width' mija się z celem, jeśli określisz szerokości komórek :). 'width' ma sens wtedy, kiedy conajmniej jedna komórka nie ma zadanej szerokości a w przypadku 'table-layout: fixed' conajmniej dwie.

Jeśli już musisz nadawać szerokości wszystkim komórkom, to samo 'td {overflow: hidden; white-space: nowrap}' wystarczy :D.

PS.
Na szerokość elementów wpływa także 'padding' i 'border' a dla tabeli dodatkowo jeszcze 'border-spacing' (cellspacing>0) jeśli nie zastosowałeś 'border-collapse: collapse' dla niej w CSS.
Gość
 

Postautor: as » 05 lutego 2006, 12:03

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915

Fakt, niewiele z tego rozumiem, ale przy tak prostym zagadnieniu wystarcza mi eksperyment ... Potrzebny mi kod w Mozilli i IE, może stad nieporozumienia.

Wyeliminowanie
table {table-layout: fixed; width: 2950px}
i pozostawienie
td {overflow: hidden; white-space: nowrap}
ujednolica rozmiary do cholera wie czego w IE i M (mimo, że każda komórka 1-szego wiersza ma określoną szerokość ...). Na oko wszystkie komórki maja szerokość pierwszej, ale nie sprawdzalem.

Poniechanie tylko table-layout: width: ... (co sugerujesz, gdy szerokości są i tak określone w komórkach i przeglądarka sobie policzy) z kolei ignoruje indywidualne rozmiary, ale tylko w IE (w M jest dobrze). W IE wszystkie kolumny sa takie same.

Poniechanie któregokolwiek z 4 dyskutowanych elementów fixed, width, overflow, nowrap prowadzi do zaskakujących interakcji, różnych w M i IE. To co wykryłem, jest jedyną konfiguracją działającą w M i IE.

Także fixed ma wieksze znaczenie, niz ujednolicenie rozmiarów, co mocno podkreślał autor we wcześniej załączonym cytacie. W żadnym wypadku nie kłóci się z indywidualizowaniem rozmiarów w poszczególnych komórkach.

html tajemniczy jest ...
dziekuje i pozdrawiam
--
as
as
 


Wróć do Standardy WWW i źle działające strony

Kto jest online

Zarejestrowani użytkownicy: Baidu [Spider], Google [Bot]

cron
Przejdź do powiązanej strony

Nawigacja:

Stopka: