-
Notifications
You must be signed in to change notification settings - Fork 1
/
jquery.fontsize.min.js
12 lines (12 loc) · 3.2 KB
/
jquery.fontsize.min.js
1
2
3
4
5
6
7
8
9
10
11
12
/*
* jQuery Chaos Fontsize Selector
* By Matthew Sigley
* Version 1.1.1
*/
(function(b){b.fn.fontsizes=function(a){var c=b(this);a=b.extend({},{fontSizes:["100%","125%","150%"],sampleChar:"A",menuContainer:c,menuTitleText:"Change Text Size: ",includeChildren:["h1","h2","h3","h4","h5"]},a);if(b.isEmptyObject(a.fontSizes)||!a.menuContainer.length)return this;var d=c.getFontsize();c.fixLineHeight();var e=b('<div class="jquery-fontsize-menu"></div>'),h=b('<span class="fontsize-title">'+a.menuTitleText+"</span>"),f="",k=0;b.each(a.fontSizes,function(h,g){computedValue=g=
g.trim();g.endsWith("%")&&(computedValue=parseInt(g,10)/100*d);k<computedValue&&(k=computedValue);f=b('<span class="fontsize-selector" data-fontsize="'+g+'" style="font-size: '+computedValue+'px">'+a.sampleChar+"</span>");f.on("click",function(e){e=b(this);var f=e.data("fontsize");e.siblings(".fontsize-selector").removeClass("active");e.addClass("active");f?c.changeFontsize({fontSize:f,includeChildren:a.includeChildren}):c.changeFontsize({fontSize:"",includeChildren:a.includeChildren})});e.append(f)});
h.css("font-size",k+"px");h.prependTo(e);a.menuContainer.prepend(e);return this};b.fn.changeFontsize=function(a){var c=b(this);a=b.extend({},{fontSize:"100%",includeChildren:[]},a);if(b.isEmptyObject(a.fontSize))return this;var d=parseInt(a.fontSize,10)/100;b.each(a.includeChildren,function(a,h){c.find(h).each(function(){var a=b(this);childFontsize=a.getFontsize();if(hyphenated=a.data("hyphenated"))a.hyphenateWords(!1),a.data("hyphenated",!1);a.fixLineHeight();a.css("font-size",d*childFontsize+"px");
a.innerWidth()<a.get(0).scrollWidth&&(a.hyphenateWords(!0),a.data("hyphenated",!0))})});c.css("font-size",a.fontSize);return this};b.fn.getFontsize=function(a){var c=b(this);a=b.extend({},{useCache:!0},a);var d=b('<span style="display: inline-block; padding: 0; line-height: 1; position: absolute; visibility: hidden; font-size: 1em;">M</span>'),e=0,e=c.data("fontsize");a.useCache&&e||(c.append(d),e=d.height(),d.remove(),c.data("fontsize",e));return e};b.fn.fixLineHeight=function(){var a=b(this),c=
a.css("line-height");if(!a.data("fixed-line-height")){if(c&&c.endsWith("px")){var d=a.getFontsize();a.css("line-height",parseInt(c,10)/d)}a.data("fixed-line-height",!0);return this}};b.fn.hyphenateWords=function(a){var c=b(this);a?c.css({hyphens:"auto","word-break":"break-word"}):c.css({hyphens:"manual","word-break":"normal"});return this}})(jQuery);
String.prototype.endsWith||(String.prototype.endsWith=function(b,a){var c=this.toString();if(void 0===a||a>c.length)a=c.length;a-=b.length;c=c.indexOf(b,a);return-1!==c&&c===a});String.prototype.trim||function(){var b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;String.prototype.trim=function(){return this.replace(b,"")}}();
jQuery(document).ready(function(b){if(b.cssHooks){var a=function(a){var c,d,k=a.charAt(0).toUpperCase()+a.slice(1),m=["Moz","Webkit","O","ms"],g=document.createElement("div");if(a in g.style)d=a;else for(var l=0;l<m.length;l++)if(c=m[l]+k,c in g.style){d=c;break}return b.support[a]=d},c=a("wordBreak"),d=a("hyphens");b.cssHooks.wordBreak={get:function(a,d,f){return b.css(a,c)},set:function(a,b){a.style[c]=b}};b.cssHooks.hyphens={get:function(a,c,f){return b.css(a,d)},set:function(a,b){a.style[d]=b}}}});