2011-10-19 3 views
15

Ho un elemento <div> che viene ridimensionato quando la finestra del browser viene ridimensionata.HTML/CSS: regola la dimensione del carattere per riempire l'altezza e la larghezza del genitore

All'interno del <div> ho un paragrafo di testo:

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

voglio il testo per cambiare font-size come ho ridimensionare il <div>, in modo che il testo sarà occuypy il 100% dello spazio disponibile.

Come posso ottenere questo effetto?
Sarebbe con una dimensione in caratteri percentuali?
Dovrei usare Javascript?

Grazie in anticipo!

+0

Un font size al 100% sarebbe guardare la dimensione del carattere che sta utilizzando e andare al 100% della sua dimensione di default, non apparirebbe ad altezza d'vostra casella . – animuson

+0

@animuson Grazie per le informazioni! È quello che pensavo. Qualche soluzione? –

+1

cosa fa margine: 80%? – Jawad

risposta

9

C'è un plugin jQuery per questo: http://fittextjs.com/

+4

Oh, e non osare farci catturare usando FitText sul testo del paragrafo. Questo è solo per giganteschi messaggi di testo! – Jawad

+1

Grazie per il plugin! Qualcosa di più leggero? jQuery è un po 'obeso per il mio bel sito web.:) –

+0

C'è qualcosa che supporti i paragrafi? –

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

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

+0

Perché utilizzare JS, mentre esiste un'opzione con puro CSS? –

0

fittext.js no funzionare correttamente per me (plug-in per jQuery, così come derivato versione senza jQuery), né con l'utilizzo di un attributo del compressore, così ho trovato un'altra soluzione:

http://www.dhtmlgoodies.com/?whichScript=text_fit_in_box (qualcuno è un altro lavoro)

che funziona perfettamente per me - testi più lunghi e testi più brevi.

Semplicemente non reagiscono a ridimensionare di finestra (funziona solo una volta sul caricamento della pagina), così ho scritto questo breve codice per eseguire automaticamente dopo ogni ridimensionamento finestra (che funziona per me):

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

</script> 

Spero possa aiutare qualcuno.

+0

Perché utilizzare JS, mentre esiste un'opzione con puro CSS? –

+0

@Zeus Zdravkov: Da che parte? –

2

Quello che vi serve è chiamato vw. Esempio CSS: font-size: 80vw;. vw significa larghezza viewerport, e 80vw = 80% della larghezza dello schermo del dispositivo

+0

Cosa succede se il tuo testo cambia? Come ci si assicura che il testo occupi ancora tutto lo spazio disponibile? –

+0

@ SébastienTromp: Ci sono 2 varianti. Variante 1: con lo script che modifica il testo, cambia anche la proprietà della dimensione del carattere. Variante 2: utilizzare JS per calcolare la dimensione del testo e quindi impostare la proprietà font-size –