-
-
Save charliepark/1115680 to your computer and use it in GitHub Desktop.
| <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> | |
| <script type="text/javascript" charset="utf-8"> | |
| $(window).load(function(){ | |
| $().hatchShow(); | |
| }); | |
| jQuery.fn.hatchShow = function(){ | |
| $('.hsjs').css('display','inner-block').css('white-space','pre').each(function(){ | |
| var t = $(this); | |
| t.wrap("<span class='hatchshow_temp' style='display:block'>"); | |
| var pw = t.parent().width(); | |
| while( t.width() < pw ){t.css('font-size', (t.fontSize()+1)+"px"), | |
| function(){while( t.width() > pw ){t.css('font-size', (t.fontSize()-.1)+"px")}}; | |
| }; | |
| }).css('visibility','visible'); | |
| }; | |
| jQuery.fn.fontSize = function(){return parseInt($(this).css('font-size').replace('px',''));}; | |
| </script> |
This is so beautifully simple. Awesome stuff!
nice
Hi, nice script! but i had to modify a little because if the start font size make the text larger than the target width it goes into an infinite loop, (or maybe i was doing something wrong.. i don't know... but in that circumstance it didn't work for me ) also for my need i modified it to make me choose to what selector apply the effect and a couple of other things, but it was only for my specific need , if you want to see it i've created a fork!
Thanks
Francesco
Hey, this is good, but unfortunately it's not responsive. Whenever I resize the window, I need to refresh the page on the new window size in order to get the text displayed correctly. Any idea how to fix this?
There a several issues with this... I'm working on a fix 😉
@mmswi A bit late (yes) but if you want it to be responsive:
(function($){
jQuery.fn.hatchShow = function(){
return els = $(this), $(window).resize(function(){
els.css({ display: 'inline-block', whiteSpace: 'pre' }).each(function(){
var parent = $(this).parent(),
fontSize = parseInt($(this).css('font-size').replace('px', '')),
maxWidth = parent.width() - (parent.outerWidth(true) - parent.width());
while ($(this).outerWidth(true) < maxWidth) {
$(this).css('font-size', ++fontSize)
}
while ($(this).outerWidth(true) > maxWidth) {
$(this).css('font-size', --fontSize)
}
})
}).resize(), els
}
})(jQuery);
thanks for this