mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Fix #12685. Handle inconsistent opacity for ie < 9. Close gh-1005.
This commit is contained in:
parent
bea5ecbba7
commit
c78a3ba657
@ -153,3 +153,4 @@ Jay Merrifield <fracmak@gmail.com>
|
||||
Allen J Schmidt Jr <cobrasoft@gmail.com>
|
||||
Marcel Greter <marcel.greter@ocbnet.ch>
|
||||
Matthias Jäggli <matthias.jaeggli@gmail.com>
|
||||
Yiming He <yiminghe@gmail.com>
|
||||
|
10
src/css.js
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
|
||||
@ -535,7 +535,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
|
||||
@ -543,8 +545,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;
|
||||
}
|
||||
}
|
||||
|
@ -868,4 +868,20 @@ test( "cssHooks - expand", function() {
|
||||
|
||||
});
|
||||
|
||||
test( "css opacity consistency across browsers (#12685)", function() {
|
||||
expect( 4 );
|
||||
|
||||
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" );
|
||||
});
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user