Skip to content
Permalink
Browse files

CSS: Remove filter from style when setting opacity to 1 - Fixes #6652…

… - REMOVE FILTER:ALPHA(OPACITY=100) AFTER ANIMATION
  • Loading branch information...
gnarf committed Jun 20, 2011
1 parent 96501d3 commit 15cd7d83a96da8885938dbdf8f2e7d85bc09777a
Showing with 17 additions and 6 deletions.
  1. +17 −6 src/css.js
@@ -2,6 +2,7 @@

var ralpha = /alpha\([^)]*\)/i,
ropacity = /opacity=([^)]*)/,
rfilter = /filter:[^;]*;?/i,
// fixed for IE9, see #8346
rupper = /([A-Z]|^ms)/g,
rnumpx = /^-?\d+(?:px)?$/i,
@@ -211,18 +212,28 @@ if ( !jQuery.support.opacity ) {

set: function( elem, value ) {
var style = elem.style,
currentStyle = elem.currentStyle;
currentStyle = elem.currentStyle,
opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")",
filter = currentStyle && currentStyle.filter || style.filter || "";

// IE has trouble with opacity if it does not have layout
// Force it by setting the zoom level
style.zoom = 1;

// Set the alpha filter to set the opacity
var opacity = jQuery.isNaN( value ) ?
"" :
"alpha(opacity=" + value * 100 + ")",
filter = currentStyle && currentStyle.filter || style.filter || "";
// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {

// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
// if "filter:" is present at all, clearType is disabled, we want to avoid this
style.cssText = style.cssText.replace( rfilter, "" );

// if there there is no filter style applied in a css rule, we are done
if ( currentStyle && !currentStyle.filter ) {
return;
}
}

// otherwise, set new filter values
style.filter = ralpha.test( filter ) ?
filter.replace( ralpha, opacity ) :
filter + " " + opacity;

0 comments on commit 15cd7d8

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