Lazily test whether computed styles include padding #247

pull/236/merge
Glen Cheney 6 years ago
parent 280b2d0e5b
commit b388dc5c54

26
dist/shuffle.js vendored

@ -433,17 +433,23 @@
HIDDEN: 0.001
};
var element = document.body || document.documentElement;
var e = document.createElement('div');
e.style.cssText = 'width:10px;padding:2px;box-sizing:border-box;';
element.appendChild(e);
var value = null;
var testComputedSize = (function () {
if (value !== null) {
return value;
}
var element = document.body || document.documentElement;
var e = document.createElement('div');
e.style.cssText = 'width:10px;padding:2px;box-sizing:border-box;';
element.appendChild(e);
var _window$getComputedSt = window.getComputedStyle(e, null),
width = _window$getComputedSt.width;
value = window.getComputedStyle(e, null).width === '10px';
var ret = width === '10px';
element.removeChild(e);
element.removeChild(e);
return value;
});
/**
* Retrieve the computed style for an element, parsed as a float.
@ -461,9 +467,9 @@
var value = getNumber(styles[style]);
// Support IE<=11 and W3C spec.
if (!ret && style === 'width') {
if (!testComputedSize() && style === 'width') {
value += getNumber(styles.paddingLeft) + getNumber(styles.paddingRight) + getNumber(styles.borderLeftWidth) + getNumber(styles.borderRightWidth);
} else if (!ret && style === 'height') {
} else if (!testComputedSize() && style === 'height') {
value += getNumber(styles.paddingTop) + getNumber(styles.paddingBottom) + getNumber(styles.borderTopWidth) + getNumber(styles.borderBottomWidth);
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -433,17 +433,23 @@
HIDDEN: 0.001
};
var element = document.body || document.documentElement;
var e = document.createElement('div');
e.style.cssText = 'width:10px;padding:2px;box-sizing:border-box;';
element.appendChild(e);
var value = null;
var testComputedSize = (function () {
if (value !== null) {
return value;
}
var element = document.body || document.documentElement;
var e = document.createElement('div');
e.style.cssText = 'width:10px;padding:2px;box-sizing:border-box;';
element.appendChild(e);
var _window$getComputedSt = window.getComputedStyle(e, null),
width = _window$getComputedSt.width;
value = window.getComputedStyle(e, null).width === '10px';
var ret = width === '10px';
element.removeChild(e);
element.removeChild(e);
return value;
});
/**
* Retrieve the computed style for an element, parsed as a float.
@ -461,9 +467,9 @@
var value = getNumber(styles[style]);
// Support IE<=11 and W3C spec.
if (!ret && style === 'width') {
if (!testComputedSize() && style === 'width') {
value += getNumber(styles.paddingLeft) + getNumber(styles.paddingRight) + getNumber(styles.borderLeftWidth) + getNumber(styles.borderRightWidth);
} else if (!ret && style === 'height') {
} else if (!testComputedSize() && style === 'height') {
value += getNumber(styles.paddingTop) + getNumber(styles.paddingBottom) + getNumber(styles.borderTopWidth) + getNumber(styles.borderBottomWidth);
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,11 +1,17 @@
const element = document.body || document.documentElement;
const e = document.createElement('div');
e.style.cssText = 'width:10px;padding:2px;box-sizing:border-box;';
element.appendChild(e);
let value = null;
export default () => {
if (value !== null) {
return value;
}
const { width } = window.getComputedStyle(e, null);
const ret = width === '10px';
const element = document.body || document.documentElement;
const e = document.createElement('div');
e.style.cssText = 'width:10px;padding:2px;box-sizing:border-box;';
element.appendChild(e);
element.removeChild(e);
value = window.getComputedStyle(e, null).width === '10px';
export default ret;
element.removeChild(e);
return value;
};

@ -1,5 +1,5 @@
import getNumber from './get-number';
import COMPUTED_SIZE_INCLUDES_PADDING from './computed-size';
import testComputedSize from './computed-size';
/**
* Retrieve the computed style for an element, parsed as a float.
@ -18,12 +18,12 @@ export default function getNumberStyle(
let value = getNumber(styles[style]);
// Support IE<=11 and W3C spec.
if (!COMPUTED_SIZE_INCLUDES_PADDING && style === 'width') {
if (!testComputedSize() && style === 'width') {
value += getNumber(styles.paddingLeft) +
getNumber(styles.paddingRight) +
getNumber(styles.borderLeftWidth) +
getNumber(styles.borderRightWidth);
} else if (!COMPUTED_SIZE_INCLUDES_PADDING && style === 'height') {
} else if (!testComputedSize() && style === 'height') {
value += getNumber(styles.paddingTop) +
getNumber(styles.paddingBottom) +
getNumber(styles.borderTopWidth) +

Loading…
Cancel
Save