mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
CSS: Remove filter from style when setting opacity to 1 - Fixes #6652 - REMOVE FILTER:ALPHA(OPACITY=100) AFTER ANIMATION
This commit is contained in:
parent
96501d38a9
commit
15cd7d83a9
23
src/css.js
23
src/css.js
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
var ralpha = /alpha\([^)]*\)/i,
|
var ralpha = /alpha\([^)]*\)/i,
|
||||||
ropacity = /opacity=([^)]*)/,
|
ropacity = /opacity=([^)]*)/,
|
||||||
|
rfilter = /filter:[^;]*;?/i,
|
||||||
// fixed for IE9, see #8346
|
// fixed for IE9, see #8346
|
||||||
rupper = /([A-Z]|^ms)/g,
|
rupper = /([A-Z]|^ms)/g,
|
||||||
rnumpx = /^-?\d+(?:px)?$/i,
|
rnumpx = /^-?\d+(?:px)?$/i,
|
||||||
@ -211,18 +212,28 @@ if ( !jQuery.support.opacity ) {
|
|||||||
|
|
||||||
set: function( elem, value ) {
|
set: function( elem, value ) {
|
||||||
var style = elem.style,
|
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
|
// IE has trouble with opacity if it does not have layout
|
||||||
// Force it by setting the zoom level
|
// Force it by setting the zoom level
|
||||||
style.zoom = 1;
|
style.zoom = 1;
|
||||||
|
|
||||||
// Set the alpha filter to set the opacity
|
// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
|
||||||
var opacity = jQuery.isNaN( value ) ?
|
if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
|
||||||
"" :
|
|
||||||
"alpha(opacity=" + value * 100 + ")",
|
|
||||||
filter = currentStyle && currentStyle.filter || style.filter || "";
|
|
||||||
|
|
||||||
|
// 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 ) ?
|
style.filter = ralpha.test( filter ) ?
|
||||||
filter.replace( ralpha, opacity ) :
|
filter.replace( ralpha, opacity ) :
|
||||||
filter + " " + opacity;
|
filter + " " + opacity;
|
||||||
|
Loading…
Reference in New Issue
Block a user