Foros del Web » Programando para Internet » Javascript »

Cortar texto según medida dada en pixeles

Estas en el tema de Cortar texto según medida dada en pixeles en el foro de Javascript en Foros del Web. Hola, tengo un array con un campo donde tengo texto y quiero limitar la longitud de ese texto, como el div tiene 20px de anchura, ...
  #1 (permalink)  
Antiguo 23/02/2015, 13:27
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Cortar texto según medida dada en pixeles

Hola, tengo un array con un campo donde tengo texto y quiero limitar la longitud de ese texto, como el div tiene 20px de anchura, necesito limitar la longitud a esa anchura y si la supera necesito cortarlo con substring, pero si lo corto por nº de caracteres como la anchura de estos varía en función de la letra que sea, unos textos me van a quedar más cortos que otros, así que tengo una función que me dice la anchura de todo el texto en pixeles, teniendo en cuenta el estilo, el tamaño y la familia de la fuente, pero lo que necesito es que partiendo de esa base la función me diga cuantos caracteres tengo que cortar para que el texto resultante me mida la longitud establecida, o sea, 20px en el caso del ejemplo y meter ese dato en el substring

Código Javascript:
Ver original
  1. var nombres = new Array();
  2. nombres = [["Luis","En un lugar de la Mancha"],
  3. ["Antonio","Lorm ipsum dolor sit amet, consecteuer adipi scing elit."]];
  4.  
  5. function cortarTexto(){
  6.     style = 'bold';
  7.     size = '10px';
  8.     family = 'Times New Roman';
  9.     texto = nombres[i][1];
  10.    
  11.     var cssStyle = style + " " + size  + " " + family;
  12.      //creamos el contexto canvas
  13.      var c=document.createElement("CANVAS");
  14.      var contexto2d=c.getContext("2d");
  15.      //le aplicamos el estilo de la fuente al  objeto canvas
  16.      contexto2d.font =cssStyle;
  17.      //nos devuelve el ancho del texto
  18.      var ancho = contexto2d.measureText(texto).width;
  19.      //retornamos el ancho calculado
  20.      alert(ancho)
  21.      return ancho;
  22. }
  #2 (permalink)  
Antiguo 23/02/2015, 16:44
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cortar texto según medida dada en pixeles

Puedes hacerlo con CSS, utilizando las propiedades text-overflow, overflow y white-space.

Código CSS:
Ver original
  1. #id de tu contenedor{
  2.     width: el ancho que desees;
  3.     height: la altura que desees;
  4.     text-overflow: ellipsis;
  5.     overflow: hidden;
  6.     white-space: nowrap;
  7. }

DEMO

La ventaja consiste en que si algún usuario desactiva JavaScript de su navegador, eso no afectará al resultado final pues es CSS, además, si el usuario redimensiona la ventana, el efecto se seguirá aplicando.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 24/02/2015, 02:18
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Cortar texto según medida dada en pixeles

El problema es que he incluido un tooltip que tiene muchas más posibilidades que el simple title, pero el tooltip no permite overflow: hidden; así que he tenido que poner white-space: nowrap; pero con esta propiedad, lógicamente se desborda, por eso quería hacer lo mismo, limitar la longitud pero con javascript

Etiquetas: cortar, según
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:36.