annotate default/node_modules/jquery/src/css/support.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 define( [
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2 "../core",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 "../var/document",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 "../var/documentElement",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 "../var/support"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 ], function( jQuery, document, documentElement, support ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 "use strict";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 ( function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 // Executing both pixelPosition & boxSizingReliable tests require only one layout
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 // so they're executed at the same time to save the second computation.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 function computeStyleTests() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 // This is a singleton, we need to execute it only once
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 if ( !div ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 "margin-top:1px;padding:0;border:0";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 div.style.cssText =
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 "margin:auto;border:1px;padding:1px;" +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 "width:60%;top:1%";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 documentElement.appendChild( container ).appendChild( div );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 var divStyle = window.getComputedStyle( div );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 pixelPositionVal = divStyle.top !== "1%";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 // Some styles come back with percentage values, even though they shouldn't
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 div.style.right = "60%";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 // Support: IE 9 - 11 only
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 // Detect misreporting of content dimensions for box-sizing:border-box elements
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 // Support: IE 9 only
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 // Detect overflow:scroll screwiness (gh-3699)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 div.style.position = "absolute";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 scrollboxSizeVal = div.offsetWidth === 36 || "absolute";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 documentElement.removeChild( container );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 // Nullify the div so it wouldn't be stored in the memory and
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 // it will also be a sign that checks already performed
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 div = null;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 function roundPixelMeasures( measure ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 return Math.round( parseFloat( measure ) );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 reliableMarginLeftVal,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 container = document.createElement( "div" ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 div = document.createElement( "div" );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 // Finish early in limited (non-browser) environments
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 if ( !div.style ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 // Support: IE <=9 - 11 only
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 // Style of cloned element affects source element cloned (#8908)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 div.style.backgroundClip = "content-box";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 div.cloneNode( true ).style.backgroundClip = "";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 support.clearCloneStyle = div.style.backgroundClip === "content-box";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 jQuery.extend( support, {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 boxSizingReliable: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 computeStyleTests();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 return boxSizingReliableVal;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 pixelBoxStyles: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 computeStyleTests();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 return pixelBoxStylesVal;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85 pixelPosition: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 computeStyleTests();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 return pixelPositionVal;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 reliableMarginLeft: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 computeStyleTests();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 return reliableMarginLeftVal;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 scrollboxSize: function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 computeStyleTests();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 return scrollboxSizeVal;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98 } )();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
100 return support;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102 } );