2011-10-19 20 views
15

Tengo un elemento <div> que cambia de tamaño a medida que cambia el tamaño de la ventana del navegador.HTML/CSS: ajuste el tamaño de la fuente para llenar el alto y ancho de los padres

Dentro de la <div> que tienen un párrafo de texto:

<div style="width:80%; height:80%; margin:10%;"> 
    <p>Paragraph of text. Paragraph of text. Paragraph of text.</p> 
</div> 

Quiero el texto para cambiar font-size como puedo cambiar el tamaño de la <div>, por lo que el texto se occuypy 100% del espacio disponible.

¿Cómo puedo lograr este efecto?
¿Sería con un tamaño de fuente porcentaje?
tendría que usar Javascript?

Gracias de antemano!

+0

un tamaño de fuente 100% sería mirar el tamaño de la fuente que está usando y vaya al 100% de su tamaño por defecto, no se vería a la altura de su cuadro . – animuson

+0

@animuson ¡Gracias por la información! Es lo que pensaba. Alguna solución? –

+1

¿Qué hace el margen: 80%? – Jawad

Respuesta

9

Hay un plugin jQuery para esto: http://fittextjs.com/

+4

Oh, y no te atrevas a dejarte atrapar usando FitText en el texto del párrafo. ¡Esto es solo para texto de visualización gigantesco! – Jawad

+1

¡Gracias por el plugin! ¿Algo más ligero? jQuery es un poco obeso para mi sitio web atractivo.:) –

+0

¿Hay algo que admita párrafos? –

1

HTML

<div id="change" style="margin:10%;"> 
    <p>Paragraph of text. Paragraph of text. Paragraph of text.</p> 
</div> 

CSS

#change { 
    width: 80%; 
    height: 80%; 
    border: 1px solid black; 
    overflow: hidden; 
    font-size: 1em; 
} 

JavaScript

$(function() { 
    while($('#change div').height() > $('#change').height()) { 
     $('#change div').css('font-size', (parseInt($('#change div').css('font-size')) - 1) + "px"); 
    } 
}); 
+0

tomado de - http://stackoverflow.com/questions/6112660/how-to-resize-automatically-a-font-size-inside-a-div – Jawad

+0

¿Por qué usar JS, mientras que hay una opción con CSS puro? –

0

fittext.js no lo hicieron funcionará correctamente para mí (plug-in para jQuery, así como derivados versión libre de jQuery), ni con el uso del atributo compresor, así que encontré otra solución:

http://www.dhtmlgoodies.com/?whichScript=text_fit_in_box (alguien es otra obra)

cuales funciona perfectamente para mí, textos más largos y textos más cortos.

Simplemente no reaccionan para cambiar el tamaño de la ventana (que funciona sólo una vez en la carga de la página), por lo que han escrito este código corto para ejecutarlo automáticamente después de cada cambio de tamaño de la ventana (que funciona para mí):

<script> 
     function calculate_font_sizes() 
     { 
     fitTextInBox('login-h1'); 
     fitTextInBox('subtittle'); 
     } 
     calculate_font_sizes(); 
     window.addEventListener('resize', calculate_font_sizes); 

</script> 

espero que pueda ayudar a alguien.

+0

¿Por qué usar JS, mientras que hay una opción con CSS puro? –

+0

@Zeus Zdravkov: ¿Por dónde? –

2

Lo que necesita es llamado vw. Ejemplo CSS: font-size: 80vw;. vw significa ancho viewerport y 80vw = 80% de la anchura de la pantalla del dispositivo

+0

¿Qué ocurre si el texto cambia? ¿Cómo se asegura de que el texto aún ocupe todo el espacio disponible? –

+0

@ SébastienTromp: hay 2 variantes. Variante 1: con la secuencia de comandos que cambia el texto, también cambie la propiedad de tamaño de fuente. Variante 2: use JS para calcular el tamaño del texto y luego configure la propiedad de tamaño de fuente –

Cuestiones relacionadas