2011-01-21 17 views
75

Dado lo siguiente, ¿cómo hago que mi última columna tenga el tamaño automático de su contenido? (La última columna debe autoSize de ancho con el contenido Supongamos que tengo único elemento 1 li debería reducir el tamaño frente a tener de 3 elementos li etc.):Autenticación de la columna de la tabla CSS

  <table cellspacing="0" cellpadding="0" border="0"> 
      <thead><!-- universal table heading --> 
       <tr> 
        <td class="tc first"><input type="checkbox" value="true" name="data-1-check-all" id="data-1-check-all"></td> 
        <td class="tc">Type</td> 
        <th>File</th> 
        <th>Sample</th> 
        <th>Action</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td>Division 1</td> 
        <td>Division 2</td> 
        <td>Division 3</td> 
        <td>Division 4</td> 
        <td>Division 5</td> 
       </tr> 
       <tr> 
        <td>Division 1</td> 
        <td>Division 2</td> 
        <td>Division 3</td> 
        <td>Division 4</td> 
        <td class="last"> 
         <ul class="actions"> 
          <li><a class="iconStats" href="#">Statystyki</a></li> 
          <li><a class="iconEdit" href="#">Edytuj</a></li> 
          <li><a class="iconDelete" href="#">Usuń</a></li> 

         </ul> 
        </td> 
       </tr> 
      </tbody> 
     </table> 

Css:

table { table-layout: fixed; width: 100%; } 
table tr { border-bottom:1px solid #e9e9e9; } 
table thead td, th {border-left: 1px solid #f2f2f2; border-right: 1px solid #d5d5d5; background: #ddd url("../images/sprites4.png") repeat-x scroll 0 100% ; font-weight: bold; text-align:left;} 
table tr td, th { border:1px solid #D5D5D5; padding:15px;} 
table tr:hover { background:#fcfcfc;} 
table tr ul.actions {margin: 0;} 
table tr ul.actions li {display: inline; margin-right: 5px;} 

Respuesta

171

A continuación se va a resolver su problema:

td.last { 
    width: 1px; 
    white-space: nowrap; 
} 
+2

¡Funciona a la perfección! (Mi caso tiene un ancho de tabla del 100% y ninguna otra columna tiene anchos. Lo apliqué a una columna). Probado en IE7/8/9, Firefox 12 y Chrome 19. – marcovtwout

+0

wow, nunca pensé que esto fuera posible con tablas html. ¡Gracias! – kulpae

+0

Buen truco, ahora uso una clase '.snug' para las celdas' th' y 'td' que quiero que tengan un" ajuste perfecto ", con sus propiedades más 2px relleno izquierdo y derecho. Otras columnas que no tienen esta clase comparten automáticamente el espacio disponible adicional. Funciona bien, gracias :-) –

21

Si querrá asegurarse de que la última fila no se ajusta y por lo tanto el tamaño de la forma que desee, echar un vistazo a

td { 
white-space: nowrap; 
} 
+0

Gracias! Magia instantánea – Alexandr

1

se puede especificar el ancho de todos, pero las células última mesa una nd agrega un diseño de tabla: fijo y un ancho a la tabla.

También podemos establecer

table tr ul.actions {margin: 0; white-space:nowrap;} 

(o conjunto de este para el último TD como Sander sugirió en su lugar).

Esto fuerza a los LI en línea a no romperse. Desafortunadamente, esto no conduce a un nuevo cálculo de ancho en el UL que contiene (y este TD padre), y por lo tanto no autosize el último TD.

Esto significa que si un elemento en línea no tiene un ancho determinado, el ancho de un TD siempre se calcula automáticamente primero (si no se especifica). Luego se procesa su contenido en línea con este ancho calculado y se aplica white-space -property, extendiendo su contenido más allá de los límites calculados.

Así que I supongo no es posible sin tener un elemento dentro del último TD con un ancho específico.

+0

no es bueno. eso es exactamente lo que intento derribar. No quiero o especificar anchos de col. las columnas deben ser de tamaño automático y la última columna debe ser del tamaño del contenido dentro de ella. – ShaneKm

+0

¿Puedes proporcionar las definiciones de CSS para las clases que usaste? – acme

+0

actualizado con css – ShaneKm

-1

el uso de automóviles y min o anchura máxima de esta manera:

td { 
max-width:50px; 
width:auto; 
min-width:10px; 
} 
+1

Esto no funciona como se requiere, cuando tengo contenido más pequeño todavía usa ancho máximo. – marcovtwout

+2

No funciona. ¡Vea otra solución de Doug Amos! – lucaferrario

+0

min-width no se aplica a la celda de la tabla. – Nick

Cuestiones relacionadas