Skip to content
Permalink
Browse files

Less letterSpacing .animate() fail in IE. Fixes #8627

  • Loading branch information...
mikesherov authored and rwaldron committed Jun 6, 2012
1 parent 5d25f78 commit b9b87d53c681a8337cdbdbe81f8f4e577e5ec277
Showing with 29 additions and 9 deletions.
  1. +13 −2 src/css.js
  2. +8 −7 src/effects.js
  3. +8 −0 test/unit/css.js
@@ -15,7 +15,13 @@ var curCSS, iframe, iframeDoc,
cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
rposition = /^(top|right|bottom|left)$/, rposition = /^(top|right|bottom|left)$/,


eventsToggle = jQuery.fn.toggle; eventsToggle = jQuery.fn.toggle,

cssNormalTransform = {
letterSpacing: 0,
fontWeight: 400,
lineHeight: 1
};


// return a css property mapped to a potentially vendor prefixed property // return a css property mapped to a potentially vendor prefixed property
function vendorPropName( style, name ) { function vendorPropName( style, name ) {
@@ -235,8 +241,13 @@ jQuery.extend({
val = curCSS( elem, name ); val = curCSS( elem, name );
} }


//convert "normal" to computed value
if ( val === "normal" && name in cssNormalTransform ) {
val = cssNormalTransform[ name ];
}

// Return, converting to number if forced or a qualifier was provided and val looks numeric // Return, converting to number if forced or a qualifier was provided and val looks numeric
if ( numeric || extra ) { if ( numeric || extra !== undefined ) {
num = parseFloat( val ); num = parseFloat( val );
return numeric || jQuery.isNumeric( num ) ? num || 0 : val; return numeric || jQuery.isNumeric( num ) ? num || 0 : val;
} }
@@ -365,19 +365,20 @@ Tween.prototype.init.prototype = Tween.prototype;
Tween.propHooks = { Tween.propHooks = {
_default: { _default: {
get: function( tween ) { get: function( tween ) {
var parsed, result; var result;


if ( tween.elem[ tween.prop ] != null && if ( tween.elem[ tween.prop ] != null &&
(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
return tween.elem[ tween.prop ]; return tween.elem[ tween.prop ];
} }


result = jQuery.css( tween.elem, tween.prop ); // passing any value as a 4th paramter to .css will automatically
// Empty strings, null, undefined and "auto" are converted to 0, // attempt a parseFloat and fallback to a string if the parse fails
// complex values such as "rotate(1rad)" are returned as is, // so, simple values such as "10px" are parsed to Float.
// simple values such as "10px" are parsed to Float. // complex values such as "rotate(1rad)" are returned as is.
return isNaN( parsed = parseFloat( result ) ) ? result = jQuery.css( tween.elem, tween.prop, false, "" );
!result || result === "auto" ? 0 : result : parsed; // Empty strings, null, undefined and "auto" are converted to 0.
return !result || result === "auto" ? 0 : result;
}, },
set: function( tween ) { set: function( tween ) {
// use step hook for back compat - use cssHook if its there - use .style if its // use step hook for back compat - use cssHook if its there - use .style if its
@@ -732,6 +732,14 @@ test("css('width') and css('height') should respect box-sizing, see #11004", fun
equal( el_dis.css("height"), el_dis.css("height", el_dis.css("height")).css("height"), "css('height') is not respecting box-sizing for disconnected element, see #11004"); equal( el_dis.css("height"), el_dis.css("height", el_dis.css("height")).css("height"), "css('height') is not respecting box-sizing for disconnected element, see #11004");
}); });


test("certain css values of 'normal' should be convertable to a number, see #8627", function() {
var el = jQuery("<div style='letter-spacing:normal;font-weight:normal;line-height:normal;'>test</div>").appendTo("#qunit-fixture");

ok( jQuery.isNumeric( parseFloat( el.css("letterSpacing") ) ), "css('letterSpacing') not convertable to number, see #8627" );
ok( jQuery.isNumeric( parseFloat( el.css("fontWeight") ) ), "css('fontWeight') not convertable to number, see #8627" );
ok( jQuery.isNumeric( parseFloat( el.css("lineHeight") ) ), "css('lineHeight') not convertable to number, see #8627" );
});

test( "cssHooks - expand", function() { test( "cssHooks - expand", function() {
expect( 15 ); expect( 15 );
var result, var result,

0 comments on commit b9b87d5

Please sign in to comment.
You can’t perform that action at this time.