getBoundingClientRect:获取元素自身大小和相对于视口的位置

const { top, bottom, left, right, x, y, width, height } = el.getBoundingClientRect()
cssText: 获取(设置)行内样式
el.style.cssText
function setStyle(el, styleArr) {
const original = el.style.cssText.split(";");
original.pop();
el.style.cssText = original.concat(styleArr).join(";") + ";";
}
getComputedStyle: 获取元素当前的样式
getComputedStyle(el)
className操作
export function hasClass(el, cls) {
if (!el || !cls) return false;
if (cls.indexOf(" ") !== -1)
throw new Error("className should not contain space.");
if (el.classList) {
return el.classList.contains(cls);
} else {
return (" " + el.className + " ").indexOf(" " + cls + " ") > -1;
}
}
export function addClass(el, cls) {
if (!el) return;
var curClass = el.className;
var classes = (cls || "").split(" ");
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.add(clsName);
} else if (!hasClass(el, clsName)) {
curClass += " " + clsName;
}
}
if (!el.classList) {
el.setAttribute("class", curClass);
}
}
export function removeClass(el, cls) {
const trim = function (string) {
return (string || "").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, "");
};
if (!el || !cls) return;
var classes = cls.split(" ");
var curClass = " " + el.className + " ";
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.remove(clsName);
} else if (hasClass(el, clsName)) {
curClass = curClass.replace(" " + clsName + " ", " ");
}
}
if (!el.classList) {
el.setAttribute("class", trim(curClass));
}
}