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