Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

handle inconsistent opacity for ie < 9. Fixes #12685 #1005

Closed
wants to merge 1 commit into from

2 participants

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Oct 22, 2012
  1. @yiminghe
This page is out of date. Refresh to see the latest.
Showing with 20 additions and 4 deletions.
  1. +6 −4 src/css.js
  2. +14 −0 test/unit/css.js
View
10 src/css.js
@@ -1,6 +1,6 @@
var curCSS, iframe, iframeDoc,
ralpha = /alpha\([^)]*\)/i,
- ropacity = /opacity=([^)]*)/,
+ ropacity = /opacity\s*=\s*([^)]*)/,
rposition = /^(top|right|bottom|left)$/,
// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
@@ -543,7 +543,9 @@ if ( !jQuery.support.opacity ) {
style.zoom = 1;
// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
- if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+ // if value === "", then remove inline opacity #12685
+ if ( ( value >= 1 || value === "" ) &&
+ jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
style.removeAttribute ) {
// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
@@ -551,8 +553,8 @@ if ( !jQuery.support.opacity ) {
// style.removeAttribute is IE Only, but so apparently is this code path...
style.removeAttribute( "filter" );
- // if there there is no filter style applied in a css rule, we are done
- if ( currentStyle && !currentStyle.filter ) {
+ // if there is no filter style applied in a css rule or unset inline opacity, we are done
+ if ( value === "" || currentStyle && !currentStyle.filter ) {
return;
}
}
View
14 test/unit/css.js
@@ -847,4 +847,18 @@ test( "cssHooks - expand", function() {
});
+test( "css opacity does not behave consistently across browsers, see #12685", function() {
+ var fixture = jQuery("#qunit-fixture"),
+ style = jQuery("<style>.opacityWithSpaces_t12685 { opacity: 0.1; filter: alpha(opacity = 10); } .opacityNoSpaces_t12685 { opacity: 0.2; filter: alpha(opacity=20); }</style>").appendTo(fixture),
+ el = jQuery("<div class='opacityWithSpaces_t12685'></div>").appendTo(fixture);
+
+ equal( Math.round( el.css("opacity") * 100 ), 10, "opacity from style sheet (filter:alpha with spaces)" );
+ el.removeClass("opacityWithSpaces_t12685").addClass("opacityNoSpaces_t12685");
+ equal( Math.round( el.css("opacity") * 100 ), 20, "opacity from style sheet (filter:alpha without spaces)" );
+ el.css( "opacity", 0.3 );
+ equal( Math.round( el.css("opacity") * 100 ), 30, "override opacity" );
+ el.css( "opacity", "" );
+ equal( Math.round( el.css("opacity") * 100 ), 20, "remove opacity override" );
+});
+
}
Something went wrong with that request. Please try again.