2010-12-12 7 views
33

Mam tabeli do-kolumn w div:dwóch kolumnach tabeli: jedna była jak najmniejsza, druga zajmuje się resztą

<div> 
<table> 
    <tbody> 
    <tr> 
     <td class="action" > 
     <a> ✔ </a> 
     </td> 
     <td class="content"> 
     <p>Bigger text...(variable size).......</p> 
     </td> 
    </tr> 
    <tr> 
     <td class="action" > 
     <a> ✔ </a><a> ✘ </a> 
     </td> 
     <td class="content"> 
     <p>Bigger text...(variable size).......</p> 
     </td> 
    </tr> 
     ... same structure in all the table 
    </tbody> 
</table> 
</div> 

I chciałbym kolumnie „Akcja”, aby dopasować zawartość, i kolumna "treści", aby przejąć resztę dostępnego miejsca. Kolumna "akcja" będzie wyglądać lepiej z wyrównaniem do prawej. Tabela powinna również zmieścić się w 100% szerokości kontenera.

Czy można to zrobić bez ustalania szerokości kolumn?

Próbowałem z tym:

table .action 
{ 
    width:auto; 
    text-align:right; 
} 
table 
{ 
    border-collapse:collapse; 
    border-spacing:0; 
    width:100%; 
} 

Ale kolumna lewa bierze połowę stołu ...

Odpowiedz

25

Nadanie treść td 100% szerokość zmusi go do podjęcia tak dużo miejsca jak to może, więc .content{ width: 100% } powinien działać.

Podaj także .action a white-space: nowrap, aby upewnić się, że znak x i znacznik wyboru pozostają obok siebie. W przeciwnym razie treść będzie w stanie zabrać jeszcze więcej miejsca i wymusić ikony poniżej siebie.

table .action 
 
{ 
 
    width:auto; 
 
    text-align:right; 
 
    white-space: nowrap 
 
} 
 
table .content { 
 
    width: 100% 
 
} 
 
table 
 
{ 
 
    border-collapse:collapse; 
 
    border-spacing:0; 
 
    width:100%; 
 
    border: 1px solid 
 
}
<table> 
 
    <tbody> 
 
    <tr> 
 
     <td class="action" > 
 
     <a> ✔ </a> 
 
     </td> 
 
     <td class="content"> 
 
     <p>Bigger text...(variable size).......</p> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td class="action" > 
 
     <a> ✔ </a><a> ✘ </a> 
 
     </td> 
 
     <td class="content"> 
 
     <p>Bigger text...(variable size).......</p> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

pracował z white-space: nowrap Dzięki! – Julien

+0

jest sposób, aby zrobić to samo bez tabel, ale zamiast tego div? – Atmocreations

+0

Oczywiście, po prostu użyj właściwości 'display: table-cell' (może również' display: table-row' na divu wokół nich) i powinny one zachowywać się jak tabela –

7

Znalazłem odpowiedź, kiedy staramy się o jedną kolumnę z wielu jak najmniejsza.

Podanie zawartości td a 1% width zmusi ją do podjęcia tak mało miejsca, jak to możliwe, więc .content{ width: 1% } pracował dla mnie.

+0

Ktoś już odpowiedział na to pytanie - ale czy mogę zapytać czemu? Nie jest dla mnie jasne, dlaczego jest to niepożądane. – samjewell

+0

Nie jestem pewien, ale myślę, że nie spełnia wymagań: kolumna powinna być tak mała, jak to możliwe, ale treść powinna być widoczna. Wygląda na to, że kolumna 1% lub 1px nie działa. – Julien

+0

Myślę, że problem polega na tym, że mówisz, że kolumna z treścią powinna wynosić 1%, gdy powinna być kolumną akcji. Myślę, że twój pomysł jest zdrowy, po prostu go pomieszałeś, ale to nie powinno uzasadniać przegranej, a jedynie korekta. Jedyną zaletą twojej metody jest to, że myślę, że lepiej poradzi sobie z pewnymi sytuacjami. Jeśli są 2 kolumny, wtedy akceptowana 100% odpowiedź działa. Ale co, jeśli istnieją 4 kolumny i chcesz, aby pierwsze 3 automatycznie dostosowały swoje szerokości, ale czwarta kolumna powinna być tak mała, jak to tylko możliwe. W takim przypadku twój 1% działa, a 100% nie. – ldkronos

2

ustawić kolumnę width: 1px & white-space: nowrap.

ten postara się zrobić to 1px ale nowrap zatrzyma go z coraz mniejszy niż najszerszym elementem w tej kolumnie

Powiązane problemy