Skip to content

Commit

Permalink
Broke more of the property-specific CSS logic out of the jQuery.css()…
Browse files Browse the repository at this point in the history
… function.
  • Loading branch information
jeresig committed Sep 5, 2010
1 parent 920099b commit b920f0a
Showing 1 changed file with 34 additions and 30 deletions.
64 changes: 34 additions & 30 deletions 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();
}; };
Expand All @@ -28,25 +24,43 @@ 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
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
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 );


var ret, style = elem.style || {}, hooks = jQuery.cssHooks[name] || {}; name = jQuery.cssProps[ origName ] || origName;


if ( value !== undefined ) { if ( value !== undefined ) {
if ( typeof value === "number" && !rexclude.test(name) ) { if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) {
value += "px"; value += "px";
} }


Expand All @@ -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;
Expand Down Expand Up @@ -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";
} }
}; };
}); });
Expand Down Expand Up @@ -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;
}; };


Expand Down

0 comments on commit b920f0a

Please sign in to comment.