annotate default/node_modules/jquery/src/css.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/pnum",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 "./core/access",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 "./core/camelCase",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 "./var/document",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7 "./var/rcssNum",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 "./css/var/rnumnonpx",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 "./css/var/cssExpand",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 "./css/var/getStyles",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 "./css/var/swap",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 "./css/curCSS",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 "./css/adjustCSS",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 "./css/addGetHookIf",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 "./css/support",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 "./core/init",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 "./core/ready",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 "./selector" // contains
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 ], function( jQuery, pnum, access, camelCase, document, rcssNum, rnumnonpx, cssExpand,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 getStyles, swap, curCSS, adjustCSS, addGetHookIf, support ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 "use strict";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 var
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 // Swappable if display is none or starts with table
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 // except "table", "table-cell", or "table-caption"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 rdisplayswap = /^(none|table(?!-c[ea]).+)/,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 rcustomProp = /^--/,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 cssShow = { position: "absolute", visibility: "hidden", display: "block" },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 cssNormalTransform = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 letterSpacing: "0",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 fontWeight: "400"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 cssPrefixes = [ "Webkit", "Moz", "ms" ],
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 emptyStyle = document.createElement( "div" ).style;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 // Return a css property mapped to a potentially vendor prefixed property
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 function vendorPropName( name ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 // Shortcut for names that are not vendor prefixed
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 if ( name in emptyStyle ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 return name;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 // Check for vendor prefixed names
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 i = cssPrefixes.length;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 while ( i-- ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 name = cssPrefixes[ i ] + capName;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 if ( name in emptyStyle ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 return name;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 }
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
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 // Return a property mapped along what jQuery.cssProps suggests or to
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 // a vendor prefixed property.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 function finalPropName( name ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 var ret = jQuery.cssProps[ name ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 if ( !ret ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 return ret;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 function setPositiveNumber( elem, value, subtract ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 // Any relative (+/-) values have already been
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 // normalized at this point
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 var matches = rcssNum.exec( value );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 return matches ?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 // Guard against undefined "subtract", e.g., when used as in cssHooks
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 var i = dimension === "width" ? 1 : 0,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85 extra = 0,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 delta = 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 // Adjustment may not be necessary
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 if ( box === ( isBorderBox ? "border" : "content" ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 return 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 for ( ; i < 4; i += 2 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 // Both box models exclude margin
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96 if ( box === "margin" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
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 // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101 if ( !isBorderBox ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
103 // Add padding
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
104 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
105
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
106 // For "border" or "margin", add border
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
107 if ( box !== "padding" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
108 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
109
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
110 // But still keep track of it otherwise
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
111 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
112 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
113 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
114
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
115 // If we get here with a border-box (content + padding + border), we're seeking "content" or
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
116 // "padding" or "margin"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
117 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
118
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
119 // For "content", subtract padding
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
120 if ( box === "content" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
121 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
122 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
123
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
124 // For "content" or "padding", subtract border
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
125 if ( box !== "margin" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
126 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
127 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
128 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
129 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
130
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
131 // Account for positive content-box scroll gutter when requested by providing computedVal
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
132 if ( !isBorderBox && computedVal >= 0 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
133
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
134 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
135 // Assuming integer scroll gutter, subtract the rest and round down
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
136 delta += Math.max( 0, Math.ceil(
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
137 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
138 computedVal -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
139 delta -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
140 extra -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
141 0.5
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
142 ) );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
143 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
144
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
145 return delta;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
146 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
147
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
148 function getWidthOrHeight( elem, dimension, extra ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
149
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
150 // Start with computed style
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
151 var styles = getStyles( elem ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
152 val = curCSS( elem, dimension, styles ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
153 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
154 valueIsBorderBox = isBorderBox;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
155
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
156 // Support: Firefox <=54
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
157 // Return a confounding non-pixel value or feign ignorance, as appropriate.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
158 if ( rnumnonpx.test( val ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
159 if ( !extra ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
160 return val;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
161 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
162 val = "auto";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
163 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
164
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
165 // Check for style in case a browser which returns unreliable values
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
166 // for getComputedStyle silently falls back to the reliable elem.style
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
167 valueIsBorderBox = valueIsBorderBox &&
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
168 ( support.boxSizingReliable() || val === elem.style[ dimension ] );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
169
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
170 // Fall back to offsetWidth/offsetHeight when value is "auto"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
171 // This happens for inline elements with no explicit setting (gh-3571)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
172 // Support: Android <=4.1 - 4.3 only
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
173 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
174 if ( val === "auto" ||
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
175 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
176
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
177 val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
178
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
179 // offsetWidth/offsetHeight provide border-box values
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
180 valueIsBorderBox = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
181 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
182
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
183 // Normalize "" and auto
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
184 val = parseFloat( val ) || 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
185
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
186 // Adjust for the element's box model
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
187 return ( val +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
188 boxModelAdjustment(
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
189 elem,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
190 dimension,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
191 extra || ( isBorderBox ? "border" : "content" ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
192 valueIsBorderBox,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
193 styles,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
194
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
195 // Provide the current computed size to request scroll gutter calculation (gh-3589)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
196 val
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
197 )
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
198 ) + "px";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
199 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
200
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
201 jQuery.extend( {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
202
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
203 // Add in style property hooks for overriding the default
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
204 // behavior of getting and setting a style property
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
205 cssHooks: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
206 opacity: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
207 get: function( elem, computed ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
208 if ( computed ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
209
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
210 // We should always get a number back from opacity
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
211 var ret = curCSS( elem, "opacity" );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
212 return ret === "" ? "1" : ret;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
213 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
214 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
215 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
216 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
217
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
218 // Don't automatically add "px" to these possibly-unitless properties
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
219 cssNumber: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
220 "animationIterationCount": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
221 "columnCount": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
222 "fillOpacity": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
223 "flexGrow": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
224 "flexShrink": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
225 "fontWeight": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
226 "lineHeight": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
227 "opacity": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
228 "order": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
229 "orphans": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
230 "widows": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
231 "zIndex": true,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
232 "zoom": true
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
233 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
234
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
235 // Add in properties whose names you wish to fix before
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
236 // setting or getting the value
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
237 cssProps: {},
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
238
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
239 // Get and set the style property on a DOM Node
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
240 style: function( elem, name, value, extra ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
241
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
242 // Don't set styles on text and comment nodes
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
243 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
244 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
245 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
246
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
247 // Make sure that we're working with the right name
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
248 var ret, type, hooks,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
249 origName = camelCase( name ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
250 isCustomProp = rcustomProp.test( name ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
251 style = elem.style;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
252
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
253 // Make sure that we're working with the right name. We don't
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
254 // want to query the value if it is a CSS custom property
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
255 // since they are user-defined.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
256 if ( !isCustomProp ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
257 name = finalPropName( origName );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
258 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
259
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
260 // Gets hook for the prefixed version, then unprefixed version
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
261 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
262
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
263 // Check if we're setting a value
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
264 if ( value !== undefined ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
265 type = typeof value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
266
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
267 // Convert "+=" or "-=" to relative numbers (#7345)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
268 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
269 value = adjustCSS( elem, name, ret );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
270
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
271 // Fixes bug #9237
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
272 type = "number";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
273 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
274
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
275 // Make sure that null and NaN values aren't set (#7116)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
276 if ( value == null || value !== value ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
277 return;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
278 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
279
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
280 // If a number was passed in, add the unit (except for certain CSS properties)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
281 if ( type === "number" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
282 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
283 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
284
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
285 // background-* props affect original clone's values
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
286 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
287 style[ name ] = "inherit";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
288 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
289
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
290 // If a hook was provided, use that value, otherwise just set the specified value
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
291 if ( !hooks || !( "set" in hooks ) ||
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
292 ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
293
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
294 if ( isCustomProp ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
295 style.setProperty( name, value );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
296 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
297 style[ name ] = value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
298 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
299 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
300
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
301 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
302
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
303 // If a hook was provided get the non-computed value from there
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
304 if ( hooks && "get" in hooks &&
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
305 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
306
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
307 return ret;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
308 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
309
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
310 // Otherwise just get the value from the style object
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
311 return style[ name ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
312 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
313 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
314
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
315 css: function( elem, name, extra, styles ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
316 var val, num, hooks,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
317 origName = camelCase( name ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
318 isCustomProp = rcustomProp.test( name );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
319
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
320 // Make sure that we're working with the right name. We don't
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
321 // want to modify the value if it is a CSS custom property
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
322 // since they are user-defined.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
323 if ( !isCustomProp ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
324 name = finalPropName( origName );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
325 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
326
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
327 // Try prefixed name followed by the unprefixed name
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
328 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
329
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
330 // If a hook was provided get the computed value from there
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
331 if ( hooks && "get" in hooks ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
332 val = hooks.get( elem, true, extra );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
333 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
334
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
335 // Otherwise, if a way to get the computed value exists, use that
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
336 if ( val === undefined ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
337 val = curCSS( elem, name, styles );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
338 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
339
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
340 // Convert "normal" to computed value
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
341 if ( val === "normal" && name in cssNormalTransform ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
342 val = cssNormalTransform[ name ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
343 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
344
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
345 // Make numeric if forced or a qualifier was provided and val looks numeric
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
346 if ( extra === "" || extra ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
347 num = parseFloat( val );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
348 return extra === true || isFinite( num ) ? num || 0 : val;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
349 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
350
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
351 return val;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
352 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
353 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
354
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
355 jQuery.each( [ "height", "width" ], function( i, dimension ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
356 jQuery.cssHooks[ dimension ] = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
357 get: function( elem, computed, extra ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
358 if ( computed ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
359
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
360 // Certain elements can have dimension info if we invisibly show them
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
361 // but it must have a current display style that would benefit
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
362 return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
363
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
364 // Support: Safari 8+
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
365 // Table columns in Safari have non-zero offsetWidth & zero
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
366 // getBoundingClientRect().width unless display is changed.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
367 // Support: IE <=11 only
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
368 // Running getBoundingClientRect on a disconnected node
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
369 // in IE throws an error.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
370 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
371 swap( elem, cssShow, function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
372 return getWidthOrHeight( elem, dimension, extra );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
373 } ) :
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
374 getWidthOrHeight( elem, dimension, extra );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
375 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
376 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
377
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
378 set: function( elem, value, extra ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
379 var matches,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
380 styles = getStyles( elem ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
381 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
382 subtract = extra && boxModelAdjustment(
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
383 elem,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
384 dimension,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
385 extra,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
386 isBorderBox,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
387 styles
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
388 );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
389
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
390 // Account for unreliable border-box dimensions by comparing offset* to computed and
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
391 // faking a content-box to get border and padding (gh-3699)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
392 if ( isBorderBox && support.scrollboxSize() === styles.position ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
393 subtract -= Math.ceil(
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
394 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
395 parseFloat( styles[ dimension ] ) -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
396 boxModelAdjustment( elem, dimension, "border", false, styles ) -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
397 0.5
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
398 );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
399 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
400
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
401 // Convert to pixels if value adjustment is needed
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
402 if ( subtract && ( matches = rcssNum.exec( value ) ) &&
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
403 ( matches[ 3 ] || "px" ) !== "px" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
404
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
405 elem.style[ dimension ] = value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
406 value = jQuery.css( elem, dimension );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
407 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
408
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
409 return setPositiveNumber( elem, value, subtract );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
410 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
411 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
412 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
413
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
414 jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
415 function( elem, computed ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
416 if ( computed ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
417 return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
418 elem.getBoundingClientRect().left -
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
419 swap( elem, { marginLeft: 0 }, function() {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
420 return elem.getBoundingClientRect().left;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
421 } )
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
422 ) + "px";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
423 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
424 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
425 );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
426
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
427 // These hooks are used by animate to expand properties
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
428 jQuery.each( {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
429 margin: "",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
430 padding: "",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
431 border: "Width"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
432 }, function( prefix, suffix ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
433 jQuery.cssHooks[ prefix + suffix ] = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
434 expand: function( value ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
435 var i = 0,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
436 expanded = {},
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
437
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
438 // Assumes a single number if not a string
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
439 parts = typeof value === "string" ? value.split( " " ) : [ value ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
440
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
441 for ( ; i < 4; i++ ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
442 expanded[ prefix + cssExpand[ i ] + suffix ] =
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
443 parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
444 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
445
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
446 return expanded;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
447 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
448 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
449
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
450 if ( prefix !== "margin" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
451 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
452 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
453 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
454
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
455 jQuery.fn.extend( {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
456 css: function( name, value ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
457 return access( this, function( elem, name, value ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
458 var styles, len,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
459 map = {},
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
460 i = 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
461
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
462 if ( Array.isArray( name ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
463 styles = getStyles( elem );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
464 len = name.length;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
465
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
466 for ( ; i < len; i++ ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
467 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
468 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
469
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
470 return map;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
471 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
472
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
473 return value !== undefined ?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
474 jQuery.style( elem, name, value ) :
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
475 jQuery.css( elem, name );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
476 }, name, value, arguments.length > 1 );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
477 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
478 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
479
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
480 return jQuery;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
481 } );