Clone el objeto contenedor y escriba 2 letras y calcule la altura. Esto devuelve la altura real con todo el estilo aplicado, altura de línea, etc. Ahora, calcule el objeto de altura / el tamaño de una letra. En Jquery, la altura excede el relleno, el margen y el borde, es genial calcular la altura real de cada línea:
other = obj.clone();
other.html('a<br>b').hide().appendTo('body');
size = other.height() / 2;
other.remove();
lines = obj.height() / size;
Si usa una fuente rara con diferente altura de cada letra, esto no funciona. Pero funciona con todas las fuentes normales, como Arial, mono, comics, Verdana, etc. Pruebe con su fuente.
Ejemplo:
<div id="content" style="width: 100px">hello how are you? hello how are you? hello how are you?</div>
<script type="text/javascript">
$(document).ready(function(){
calculate = function(obj){
other = obj.clone();
other.html('a<br>b').hide().appendTo('body');
size = other.height() / 2;
other.remove();
return obj.height() / size;
}
n = calculate($('#content'));
alert(n + ' lines');
});
</script>
Resultado: 6 Lines
Funciona en todos los navegadores sin funciones raras fuera de los estándares.
Verificación: https://jsfiddle.net/gzceamtr/