Показать сообщение отдельно
  #7 (permalink)  
Старый 09.08.2012, 22:10
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Aetae
Обойдуться без %название_свистоперделки%. Естественно с сохранением базового функционала.
полностью согласен!

я написал когда-то говнокод, может быть, подойдёт ТС :

помню, что когда тестил его, выглядело сносно - т.е. так же, как и в w3c'шных браузерах.
тут отсутствуют некоторые функции, что делает код незапускаемым ... но Вам ведь понять просто надо, да ?)
// TEXT-SHADOW SUPPORT MODULE 
		textShadow : {
			get: function(element, computed, extra){
				return element.style.textShadow;
			},
			set: function(element, value){

				var $el = $(element),
						blur,
						color,
						zIndex = $el.css("zIndex"),
						progid = "progid:DXImageTransform.Microsoft.",
						filterStr = [],
						alpha,
						valueStr = value;

				value = value.match(/^(\d+)(?:px)? (\d+)(?:px)? (\d+)(?:px)? ([a-z]+|#(?:[a-f0-9]{3}){1,2}|\w+\((?:,?\s*[\d.]{1,3}){3,4}\))$/i);

				if (!value) { // некорректная строка text-shadow.
					return;
				}
				blur = parseFloat(value[3]);
				value[4] = removeSpaces(value[4]);
				color = toHEX(value[4]);
				alpha = getAlpha(value[4]);

				if (!color) { // передан некорректный цвет
					return;
				}

				element.style.textShadow = valueStr;

				if (blur) {
					filterStr.push(progid + "Blur(pixelRadius=" + blur.toFixed(1) + ")");
				}
				if (alpha !== 1.0) {
					filterStr.push(progid + "Alpha(opacity=" + alpha * 100 + ")");
				}

				filterStr = filterStr.join(" ");

				if (zIndex === "auto") {
					zIndex = 0;
				}
				
				$el
					.css({"position": "relative", zIndex: zIndex, color: $el.css("color")})
						.append('<span class="shadowly"></span>').
							find(".shadowly").
								html($el.html()).
									css({
										position: "absolute", 
										zIndex: zIndex - 1, 
										left: toFloat(value[1]) - blur + "px", 
										top: toFloat(value[2]) - blur + "px", 
										paddingLeft: $el.css("paddingLeft"), 
										paddingTop: $el.css("paddingTop"), 
										color: color,
										width: "100%",

										filter: filterStr
									});
			}
		}

похоже, что был написан как плагин для jQuery т.е. как хук для $element.css

Последний раз редактировалось melky, 09.08.2012 в 22:15.
Ответить с цитированием