import _ from 'lodash';
const dom = {
// 获取浏览器视口高度
getViewPortHeight() {
let e = window;
let a = 'inner';
if(!('innerHeight' in window)) {
a = 'client';
e = document.documentElement || document.body;
}
return e[`${a}Height`];
},
/**
获取DOM节点的某个css属性的最终值
@auther
@params {HTMLElement} ele DOM节点元素
@params {String} css 需要获取的css属性值
@return {String}
*/
getCssStyle(ele, css) {
return window.getComputedStyle(ele, null).getPropertyValue(css);
},
/**
查找某个DOM元素上是否存在该类名
@auther
@params {HTMLElement} ele DOM节点元素
@params {String} cls 类名
*/
hasClass(elem, cls) {
return elem.className.indexOf(cls) > -1;
}
/**
给DOM元素添加一个CSS class
@auther
@params {HTMLElement} ele DOM节点元素
@params {String} className 类名
*/
addClass(elem, cls) {
const ele = elem;
if(!dom.hasClass(ele, cls)) {
const oldCls = ele.className;
ele.className = _.isEmpty(oldCls) ? cls : `${oldCls} ${cls}`;
}
}
/**
删除DOM元素某个class类名
@auther
@params {HTMLElement} elem 需要查找的DOM元素
@params {String} cls 类名
*/
removeClass(elem, cls) {
const ele = elem;
if(dom.hasClass(ele, cls)) {
const oldCls = ` ${ele.className} `;
const newCls = oldCls.replace(` ${cls} `, ' ');
ele.className = newCls.trim();
}
}
/**
给DOM元素添加自定义属性
@param {HTMLElemetn} ele DOM圆度
@param {String} key属性的键
@param {*} value 属性的值
*/
setAttribute(ele, key, value) {
ele.setAttribute(key, value);
};
// 获取DOM元素的自定义属性
getAttribute(ele, key) {
return ele.getAttribute(key);
}
/**
给DOM元素设置style 属性
@param {HTMLElemetn} ele DOM圆度
@param {String} prop属性的名称
@param {*} value 属性的值
*/
setStyle(ele, prop, value) {
const tempEle = ele;
if(ele) {
tempEle.style[prop] = value;
}
}
// 页面回到顶部,一般切换分页的时候会需要
scrollToTop() {
window.scrollTo(0, 0);
}
};
export default dom;