2010-03-30 24 views
12

Quiero que el texto en una de las columnas de una tabla no se ajuste, sino que simplemente se trunque para que coincida con el actual de la celda de la tabla. No quiero que la celda de la tabla cambie de tamaño, ya que necesito que la mesa sea exactamente 100% del ancho del contenedor.Truncar texto para que se ajuste a la celda de la tabla sin aplicar css o jquery

Esto se debe a que la tabla con 100% de ancho se encuentra dentro de una posición div con desbordamiento: automático (en realidad está dentro de un panel jQuery UI.Layout).

Intenté ambos overflow: hidden y el texto todavía está envuelto. Intenté white-space: nowrap, pero extendió la tabla más ancha que 100% y agregué una barra de desplazamiento horizontal.

div.container { 
    position: absolute; 
    overflow: auto; 
    /* user can slide resize bars to change the width & height */ 
    width: 600px; 
    height: 300px; 
} 
table { width: 100% } 
td.nowrap { 
    overflow: hidden; 
    white-space: nowrap; 
} 
<div class="container"> 
    <table> 
    <tr> 
     <td>From</td> 
     <td>Subject</td> 
     <td>Date</td> 
    </tr> 
    <tr> 
     <td>Bob Smith</td> 
     <td class="nowrap"> 
     <strong>Message subject</strong> 
     <span>This is a preview of the message body and could be long.</span> 
     </td> 
     <td>2010-03-30 02:18AM</td> 
    </tr> 
    </table> 
</div> 

¿Hay alguna manera el uso de CSS para resolver esto? Si tuviera un tamaño de celda de tabla fijo, entonces overflow:hidden truncaría todo lo que fluye, pero no puedo usar un tamaño fijo porque quiero que la tabla se estire con el tamaño del panel UI.Layout.

De lo contrario, ¿cómo podría solucionar esto con jQuery?

Mi caso de uso es similar a la interfaz de Gmail, donde un asunto del correo electrónico está en negrita y se muestra el principio del cuerpo del mensaje, pero luego se trunca para que encaje.

Respuesta

0

Tal vez esto le ayudará JQuery HTML Truncator by Henrik Nyh :)

+0

@ Kyle, gracias, pero esto no es exactamente lo que estoy buscando. No quiero la función más/menos, solo quiero que el texto encaje y truncar el resto. – Tauren

0

Usted no tiene que especificar el tamaño de la celda en píxeles, puede simplemente usar porcentajes :

td.nowrap { 
overflow: hidden; 
white-space: nowrap; 
width: 60%; /* or whatever */ 
} 
+1

@RegDwight: Ciertamente lo intenté, tanto asignando anchos por css como directamente en el html. Pero en cada caso, la tabla se expandiría más allá del 100% y obtendría una barra de desplazamiento Horiz. – Tauren

2

Pruebe esto en el lapso etiqueta dentro de td

(late) pero podría ayudar a otra persona)

5

Esto es bastante antiguo, pero esta es mi respuesta.

table { width: 100%; table-layout: fixed;} 

DEMO

+1

Esto funciona _ además de_ establecer el estilo td = 'espacio en blanco: nowrap; desbordamiento: oculto; ' – MarkHu

Cuestiones relacionadas