Broke more of the property-specific CSS logic out of the jQuery.css() function.
This commit is contained in:
parent
920099b29c
commit
b920f0aeb4
64
src/css.js
64
src/css.js
|
@ -1,22 +1,18 @@
|
||||||
// exclude the following css properties to add px
|
var ralpha = /alpha\([^)]*\)/,
|
||||||
var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
|
|
||||||
ralpha = /alpha\([^)]*\)/,
|
|
||||||
ropacity = /opacity=([^)]*)/,
|
ropacity = /opacity=([^)]*)/,
|
||||||
rfloat = /float/i,
|
|
||||||
rdashAlpha = /-([a-z])/ig,
|
rdashAlpha = /-([a-z])/ig,
|
||||||
rupper = /([A-Z])/g,
|
rupper = /([A-Z])/g,
|
||||||
rnumpx = /^-?\d+(?:px)?$/i,
|
rnumpx = /^-?\d+(?:px)?$/i,
|
||||||
rnum = /^-?\d/,
|
rnum = /^-?\d/,
|
||||||
|
|
||||||
cssShow = { position: "absolute", visibility: "hidden", display:"block" },
|
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
||||||
cssWidth = [ "Left", "Right" ],
|
cssWidth = [ "Left", "Right" ],
|
||||||
cssHeight = [ "Top", "Bottom" ],
|
cssHeight = [ "Top", "Bottom" ],
|
||||||
curCSS,
|
curCSS,
|
||||||
|
|
||||||
// cache check for defaultView.getComputedStyle
|
// cache check for defaultView.getComputedStyle
|
||||||
getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
|
getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
|
||||||
// normalize float css property
|
|
||||||
styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
|
|
||||||
fcamelCase = function( all, letter ) {
|
fcamelCase = function( all, letter ) {
|
||||||
return letter.toUpperCase();
|
return letter.toUpperCase();
|
||||||
};
|
};
|
||||||
|
@ -28,7 +24,29 @@ jQuery.fn.css = function( name, value ) {
|
||||||
};
|
};
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
cssHooks: {},
|
cssHooks: {
|
||||||
|
opacity: {
|
||||||
|
get: function( elem ) {
|
||||||
|
// We should always get a number back from opacity
|
||||||
|
var ret = curCSS( elem, "opacity", "opacity" );
|
||||||
|
return ret === "" ? "1" : ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// exclude the following css properties to add px
|
||||||
|
cssNumber: {
|
||||||
|
"zIndex": true,
|
||||||
|
"fontWeight": true,
|
||||||
|
"opacity": true,
|
||||||
|
"zoom": true,
|
||||||
|
"lineHeight": true
|
||||||
|
},
|
||||||
|
|
||||||
|
cssProps: {
|
||||||
|
// normalize float css property
|
||||||
|
"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
|
||||||
|
},
|
||||||
|
|
||||||
css: function( elem, name, value, force, extra ) {
|
css: function( elem, name, value, force, extra ) {
|
||||||
// don't set styles on text and comment nodes
|
// don't set styles on text and comment nodes
|
||||||
|
@ -36,17 +54,13 @@ jQuery.extend({
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we're using the right name for getting the float value
|
var ret, origName = name.replace( rdashAlpha, fcamelCase ),
|
||||||
if ( rfloat.test( name ) ) {
|
style = elem.style || {}, hooks = jQuery.cssHooks[ origName ] || {};
|
||||||
name = styleFloat;
|
|
||||||
}
|
|
||||||
|
|
||||||
name = name.replace( rdashAlpha, fcamelCase );
|
name = jQuery.cssProps[ origName ] || origName;
|
||||||
|
|
||||||
var ret, style = elem.style || {}, hooks = jQuery.cssHooks[name] || {};
|
|
||||||
|
|
||||||
if ( value !== undefined ) {
|
if ( value !== undefined ) {
|
||||||
if ( typeof value === "number" && !rexclude.test(name) ) {
|
if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) {
|
||||||
value += "px";
|
value += "px";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +77,7 @@ jQuery.extend({
|
||||||
ret = style[ name ];
|
ret = style[ name ];
|
||||||
|
|
||||||
} else if ( curCSS ) {
|
} else if ( curCSS ) {
|
||||||
ret = curCSS( elem, name );
|
ret = curCSS( elem, name, origName );
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -104,7 +118,7 @@ jQuery.each(["height", "width"], function( i, name ) {
|
||||||
|
|
||||||
set: function( elem, value ) {
|
set: function( elem, value ) {
|
||||||
// ignore negative width and height values #1599
|
// ignore negative width and height values #1599
|
||||||
elem.style[ name ] = Math.max( parseFloat(value), 0 );
|
elem.style[ name ] = Math.max( parseFloat(value), 0 ) + "px";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -140,29 +154,19 @@ if ( !jQuery.support.opacity ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getComputedStyle ) {
|
if ( getComputedStyle ) {
|
||||||
curCSS = function( elem, name ) {
|
curCSS = function( elem, newName, name ) {
|
||||||
var ret, defaultView, computedStyle;
|
var ret, defaultView, computedStyle;
|
||||||
|
|
||||||
// Only "float" is needed here
|
|
||||||
if ( rfloat.test( name ) ) {
|
|
||||||
name = "float";
|
|
||||||
}
|
|
||||||
|
|
||||||
name = name.replace( rupper, "-$1" ).toLowerCase();
|
name = name.replace( rupper, "-$1" ).toLowerCase();
|
||||||
|
|
||||||
if ( !(defaultView = elem.ownerDocument.defaultView) ) {
|
if ( !(defaultView = elem.ownerDocument.defaultView) ) {
|
||||||
return null;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
|
if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
|
||||||
ret = computedStyle.getPropertyValue( name );
|
ret = computedStyle.getPropertyValue( name );
|
||||||
}
|
}
|
||||||
|
|
||||||
// We should always get a number back from opacity
|
|
||||||
if ( name === "opacity" && ret === "" ) {
|
|
||||||
ret = "1";
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue