Показать сообщение отдельно
  #14 (permalink)  
Старый 21.09.2016, 12:24
Новичок на форуме
Отправить личное сообщение для Andronid Посмотреть профиль Найти все сообщения от Andronid
 
Регистрация: 20.09.2016
Сообщений: 6

Немного изменил плагин - плагин применяю ко всей странице, а на ней присутствовали несколько размеров шрифтов. При загрузке из localstorage один размер применялся ко всем элементам. А это немного не устраивало
$.fn.zoomtext = function (c) {

		var old = JSON.parse(localStorage.getItem("elementsFont")) || {};

		var a = {
			min: 8, // 0 - no limits
			max: 42, // 0  - no limits
			increment: 1, // increment
			recovery: !1, // recovery old
			skip: !1, // skip child  (child selector - "*")
			conserve: !0 // save to local storage
		}, a = $.extend(a, c);

		
		// the selector of the element
		var sel = this.selector;

		if (!a.recovery && old && old[sel] && old[sel].increment) {
			a.increment = a.increment * old[sel].increment;
		}

		a.recovery && (a.increment = 1);

		a.conserve && (old[sel] = {
			skip: a.skip,
			increment: a.increment
		});
		localStorage.setItem("elementsFont", JSON.stringify(old));


		// the collection  - element and its child
		c = $("*", this).add(this);
		

		// firstly save original font size for each elements in the collection if it has not yet
		c.each(function (a, c) {
			var b = $(this).css("fontSize");
			!$(this).data("fontSize") && $(this).data("fontSize", b).css("fontSize", b)
		});
		// if skip then remove from collection
		a.skip && (c = c.not($(a.skip, this)));

		return c.each(function (c, d) {

			var b = $(this).css("fontSize");
			b = parseFloat(b) * a.increment + 'px';

			//b = $("<div/>", {css: {fontSize: b}}).css("fontSize", a.increment).css("fontSize");

			a.max && parseFloat(b) > a.max && (b = a.max);
			a.min && parseFloat(b) < a.min && (b = a.min);

			// if recovery then set original fontSize
			a.recovery && (b = $(this).data("fontSize"));

			$(this).css({
				fontSize: b
			})
		})
	};

	var old = JSON.parse(localStorage.getItem("elementsFont")) || {};
	Object.keys(old).forEach(function (key) {
		$(key).zoomtext({
			increment: old[key].increment,
			skip: old[key].skip,
			conserve: false
		});
	});

	$(".font-sizer .reset").click(function (e) {
		e.preventDefault();
		$('body').zoomtext({
			recovery: true
		});
	});

	$(".font-sizer .plus").click(function (e) {
		e.preventDefault();
		$('body').zoomtext({increment: 1.1});
	});

	$(".font-sizer .minus").click(function (e) {
		e.preventDefault();
		$('body').zoomtext({increment: 0.9});
	});
Ответить с цитированием