最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - HTMLCSS - adjust font-size to fill parent height and width - Stack Overflow

programmeradmin5浏览0评论

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
Add a comment  | 

4 Answers 4

Reset to default 6

There'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

发布评论

评论列表(0)

  1. 暂无评论