I have a <div>
element that resizes as the browser window resizes.
Inside the <div>
I have a paragraph of text:
<div style="width:80%; height:80%; margin:10%;">
<p>Paragraph of text. Paragraph of text. Paragraph of text.</p>
</div>
I want the text to change font-size
as I resize the <div>
, so that the text will occuypy 100% of the available space.
How can I achieve this effect?
Would it be with a percentage font-size?
Would I have to use Javascript?
Thanks in advance!
I have a <div>
element that resizes as the browser window resizes.
Inside the <div>
I have a paragraph of text:
<div style="width:80%; height:80%; margin:10%;">
<p>Paragraph of text. Paragraph of text. Paragraph of text.</p>
</div>
I want the text to change font-size
as I resize the <div>
, so that the text will occuypy 100% of the available space.
How can I achieve this effect?
Would it be with a percentage font-size?
Would I have to use Javascript?
Thanks in advance!
Share Improve this question edited Oct 19, 2011 at 18:30 Web_Designer asked Oct 19, 2011 at 18:19 Web_DesignerWeb_Designer 74.6k93 gold badges209 silver badges266 bronze badges 4- A 100% font size would look at the size of the font it's using and go to 100% of its default size, it would not look at your box's height. – animuson ♦ Commented Oct 19, 2011 at 18:23
- @animuson Thanks for the info! That's what I thought. Any solutions? – Web_Designer Commented Oct 19, 2011 at 18:26
- 1 what does margin:80% do? – Jawad Commented Oct 19, 2011 at 18:26
- That was a bug, thanks @Jawad! – Web_Designer Commented Oct 19, 2011 at 18:29
4 Answers
Reset to default 6There's a jquery plugin for this: http://fittextjs.com/
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" );
}
});
fittext.js
did not work correctly for me (plugin for jQuery, as well as derived jquery-free version), nor with using of compressor attribute, so I found another solution:
http://www.dhtmlgoodies.com/?whichScript=text_fit_in_box (someone's another work)
which works perfectly for me - longer texts as well as shorter texts.
It just do not react to resize of window (it works just once on loading of page), so I have written this short code to run it automatically after each window resize (it works for me):
<script>
function calculate_font_sizes()
{
fitTextInBox('login-h1');
fitTextInBox('subtittle');
}
calculate_font_sizes();
window.addEventListener('resize', calculate_font_sizes);
</script>
I hope it can help to someone.
Check out the vw properties in css
http://www.w3schools.com/cssref/css_units.asp