/* eslint-disable no-nested-ternary */ var PIXEL_PATTERN = /margin|padding|width|height|max|min|offset/; var removePixel = { left: true, top: true }; var floatMap = { cssFloat: 1, styleFloat: 1, float: 1 }; function getComputedStyle(node) { return node.nodeType === 1 ? node.ownerDocument.defaultView.getComputedStyle(node, null) : {}; } function getStyleValue(node, type, value) { type = type.toLowerCase(); if (value === 'auto') { if (type === 'height') { return node.offsetHeight; } if (type === 'width') { return node.offsetWidth; } } if (!(type in removePixel)) { removePixel[type] = PIXEL_PATTERN.test(type); } return removePixel[type] ? parseFloat(value) || 0 : value; } export function get(node, name) { var length = arguments.length; var style = getComputedStyle(node); name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name; return length === 1 ? style : getStyleValue(node, name, style[name] || node.style[name]); } export function set(node, name, value) { var length = arguments.length; name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name; if (length === 3) { if (typeof value === 'number' && PIXEL_PATTERN.test(name)) { value = "".concat(value, "px"); } node.style[name] = value; // Number return value; } for (var x in name) { if (name.hasOwnProperty(x)) { set(node, x, name[x]); } } return getComputedStyle(node); } export function getOuterWidth(el) { if (el === document.body) { return document.documentElement.clientWidth; } return el.offsetWidth; } export function getOuterHeight(el) { if (el === document.body) { return window.innerHeight || document.documentElement.clientHeight; } return el.offsetHeight; } export function getDocSize() { var width = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth); var height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight); return { width: width, height: height }; } export function getClientSize() { var width = document.documentElement.clientWidth; var height = window.innerHeight || document.documentElement.clientHeight; return { width: width, height: height }; } export function getScroll() { return { scrollLeft: Math.max(document.documentElement.scrollLeft, document.body.scrollLeft), scrollTop: Math.max(document.documentElement.scrollTop, document.body.scrollTop) }; } export function getOffset(node) { var box = node.getBoundingClientRect(); var docElem = document.documentElement; // < ie8 不支持 win.pageXOffset, 则使用 docElem.scrollLeft return { left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0), top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0) }; }