| define([ |
| "../core", |
| "../var/support" |
| ], function( jQuery, support ) { |
| |
| (function() { |
| var pixelPositionVal, boxSizingReliableVal, |
| docElem = document.documentElement, |
| container = document.createElement( "div" ), |
| div = document.createElement( "div" ); |
| |
| if ( !div.style ) { |
| return; |
| } |
| |
| // Support: IE9-11+ |
| // Style of cloned element affects source element cloned (#8908) |
| div.style.backgroundClip = "content-box"; |
| div.cloneNode( true ).style.backgroundClip = ""; |
| support.clearCloneStyle = div.style.backgroundClip === "content-box"; |
| |
| container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" + |
| "position:absolute"; |
| container.appendChild( div ); |
| |
| // Executing both pixelPosition & boxSizingReliable tests require only one layout |
| // so they're executed at the same time to save the second computation. |
| function computePixelPositionAndBoxSizingReliable() { |
| div.style.cssText = |
| // Support: Firefox<29, Android 2.3 |
| // Vendor-prefix box-sizing |
| "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + |
| "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + |
| "border:1px;padding:1px;width:4px;position:absolute"; |
| div.innerHTML = ""; |
| docElem.appendChild( container ); |
| |
| var divStyle = window.getComputedStyle( div, null ); |
| pixelPositionVal = divStyle.top !== "1%"; |
| boxSizingReliableVal = divStyle.width === "4px"; |
| |
| docElem.removeChild( container ); |
| } |
| |
| // Support: node.js jsdom |
| // Don't assume that getComputedStyle is a property of the global object |
| if ( window.getComputedStyle ) { |
| jQuery.extend( support, { |
| pixelPosition: function() { |
| |
| // This test is executed only once but we still do memoizing |
| // since we can use the boxSizingReliable pre-computing. |
| // No need to check if the test was already performed, though. |
| computePixelPositionAndBoxSizingReliable(); |
| return pixelPositionVal; |
| }, |
| boxSizingReliable: function() { |
| if ( boxSizingReliableVal == null ) { |
| computePixelPositionAndBoxSizingReliable(); |
| } |
| return boxSizingReliableVal; |
| }, |
| reliableMarginRight: function() { |
| |
| // Support: Android 2.3 |
| // Check if div with explicit width and no margin-right incorrectly |
| // gets computed margin-right based on width of container. (#3333) |
| // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right |
| // This support function is only executed once so no memoizing is needed. |
| var ret, |
| marginDiv = div.appendChild( document.createElement( "div" ) ); |
| |
| // Reset CSS: box-sizing; display; margin; border; padding |
| marginDiv.style.cssText = div.style.cssText = |
| // Support: Firefox<29, Android 2.3 |
| // Vendor-prefix box-sizing |
| "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + |
| "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; |
| marginDiv.style.marginRight = marginDiv.style.width = "0"; |
| div.style.width = "1px"; |
| docElem.appendChild( container ); |
| |
| ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); |
| |
| docElem.removeChild( container ); |
| div.removeChild( marginDiv ); |
| |
| return ret; |
| } |
| }); |
| } |
| })(); |
| |
| return support; |
| |
| }); |