65 lines
2.1 KiB
JavaScript
Executable File
65 lines
2.1 KiB
JavaScript
Executable File
/*global jQuery */
|
|
/*!
|
|
* This is an adapted version of fit text
|
|
* 1) a user defined caption font ratio has been added
|
|
* 2) the resizer takes into account not only the element width, but the specified parent's height. => this solves the problem of fonts not properly resized on landscape mobile devices, or slider too short (user can set the slider's height)
|
|
* @return void()
|
|
* FitText.js 1.2
|
|
*
|
|
* Copyright 2011, Dave Rupert http://daverupert.com
|
|
* Released under the WTFPL license
|
|
* http://sam.zoy.org/wtfpl/
|
|
*
|
|
* Date: Thu May 05 14:23:00 2011 -0600
|
|
*/
|
|
|
|
(function( $ ){
|
|
|
|
$.fn.czrFitText = function( kompressor, options ) {
|
|
|
|
// Setup options
|
|
var compressor = kompressor || 1,
|
|
settings = $.extend({
|
|
'minFontSize' : Number.NEGATIVE_INFINITY,
|
|
'maxFontSize' : Number.POSITIVE_INFINITY,
|
|
'fontRatio' : 1,
|
|
'refParentSel' : '.fittext-p',
|
|
'parentCompressorFactor' : 8,
|
|
}, options);
|
|
|
|
return this.each(function(){
|
|
|
|
// Store the object
|
|
var $this = $(this),
|
|
$refParent = $this.closest(settings.refParentSel),
|
|
_font_size;
|
|
|
|
// Resizer() resizes items based on the object width divided by the compressor * 10
|
|
var resizer = function () {
|
|
|
|
_font_size = Math.max(
|
|
Math.min(
|
|
$this.width() / (compressor*10),
|
|
( $refParent.length >= 1 ) ? $refParent.height() / (compressor*settings.parentCompressorFactor) : $this.width() / (compressor*10),
|
|
parseFloat(settings.maxFontSize)
|
|
),
|
|
parseFloat(settings.minFontSize)
|
|
);
|
|
|
|
_font_size = Math.max( _font_size * settings.fontRatio, parseFloat( settings.minFontSize ) );
|
|
|
|
$this.css('font-size', _font_size + 'px' );
|
|
$this.css('line-height', ( _font_size * 1.45 ) + 'px');
|
|
};
|
|
|
|
// Call once to set.
|
|
resizer();
|
|
|
|
// Call on resize. Opera debounces their resize by default.
|
|
$(window).on('resize.czrFittext orientationchange.czrFittext', resizer);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
})( jQuery ); |