2012-03-16 6 views
6

Mam następujący kod:Jak zapobiegać tabelę z kurczących się rzutni

table { 
 
    border-collapse: collapse; 
 
} 
 

 
td { 
 
    padding: 0px; 
 
    border: 1px solid #d3d3d3; 
 
    width: 300px; 
 
    height: 100px; 
 
    text-align: center; 
 
    white-space: nowrap; 
 
}
<table> 
 
    <tr> 
 
    <td>A</td> 
 
    <td>B</td> 
 
    <td>C</td> 
 
    </tr> 
 
    <tr> 
 
    <td>D</td> 
 
    <td>E</td> 
 
    <td>F</td> 
 
    </tr> 
 
    <tr> 
 
    <td>G</td> 
 
    <td>H</td> 
 
    <td>I</td> 
 
    </tr> 
 
</table>

Kiedy wyciągnę przeglądarkę tak, że rzutnia jest mniejszy niż 900px, wiersze tabeli są złączowe do dopasować do okna roboczego, mimo że ustawiłem jawnie szerokość. Jak mogę zapobiec temu zachowaniu?

+0

Ustaw szerokość na elemencie tabeli. – Kyle

+0

Drogi, czego dokładnie chcesz jasno określić ... – w3uiguru

+0

Chcę, aby szerokość stołu była równa 900px bez wyraźnego określenia (mogę więc dodać nową kolumnę bez aktualizowania arkusza stylów) –

Odpowiedz

2

udało mi się znaleźć odpowiedź sam:

td { 
    padding: 0px; 
    border: 1px solid #d3d3d3; 
    min-width: 300px; 
    max-width: 300px; 
    width: 300px; 
    height: 100px; 
    text-align: center; 
    white-space: nowrap; 
} 
+0

To jednak działa tylko w chrome. Postanowiła zastosować inne podejście do tego samego problemu. –

+0

Wygląda również na Firefoksa – diraria

2

e: Zmieniono odpowiedź.

Cześć,

to sprawdzić, to dynamicznie (owski) ustawić szerokość tabeli

http://jsfiddle.net/joshuamartin/KtAny/

(function() { 
    var tdWidth = '300'; 


    var columnCount = $("#tID").find('tr')[0].cells.length; 
    var tableWidth = tdWidth * columnCount; 

    $("table#tID").attr('width', tableWidth); 

    // console.log(tableWidth); 
})(); 

Trzeba ręcznie wprowadzić do szerokości td, ponieważ Nie wiem, jak można uzyskać styl CSS z arkusza stylów.

Coś takiego jak this może ci pomóc, jeśli chcesz, aby wszystko było dynamiczne, ale to rozwiązanie działa dobrze. Zepsułem to naprawdę całkiem sporo, ale można to wszystko zrobić w jednym wierszu, z tylko zmienną tdWidth.

(function() { 
    var tdWidth = '300';  
    $("table#tID").attr('width', $("#tID").find('tr')[0].cells.length * tdWidth); 
})(); 
​ 
+0

Tak, to rozwiązuje (faktycznie zrobiłem to z JS), ale jeśli dodaję nową kolumnę, muszę ponownie zmienić szerokość, co nie jest najlepszym rozwiązaniem. –

+0

@KonstantinSolomatov, spójrz na moją nową odpowiedź. –

+0

Jest to rozwiązanie, którego teraz używam (używam GWT zamiast Jquery), ale nie jest to bardzo dobre IMO. BŁĘDY, że rozwiązanie jest błędne: nie bierze pod uwagę granicy –

2

Zapis ten table-layout:fixed;

+5

To nie działa. Przynajmniej w Chrome. –

-1

wstawić obraz do każdej kolumny, aby zmusić wielkości komórek;

<img src="blank.gif" width="300" height="1" border="0" alt="">