UNPKG

wangbd-myui

Version:

MY前端基础框架核心组件库

71 lines (62 loc) 1.92 kB
/** * dom操作模块, 更多dom操作可以使用 element-ui/lib/util/dom * @module $ui/utils/dom * @author 陈华春 */ /** * 动画滚动到顶部 scrollTop animation * @param {HTMLElement} el DOM元素 * @param {Number} [from=0] 开始位置 * @param {Number} to 滚动到位置 * @param {Number} [duration=500] 动画持续时间 */ export function scrollTop(el, from = 0, to, duration = 500) { if (!window.requestAnimationFrame) { window.requestAnimationFrame = ( window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { return window.setTimeout(callback, 1000 / 60) } ) } const difference = Math.abs(from - to) const step = Math.ceil(difference / duration * 50) function scroll(start, end, step) { if (start === end) return let d = (start + step > end) ? end : start + step if (start > end) { d = (start - step < end) ? end : start - step } if (el === window) { window.scrollTo(d, d) } else { el.scrollTop = d } window.requestAnimationFrame(() => scroll(d, end, step)) } scroll(from, to, step) } /** * 在元素前插入元素 * @param {HTMLElement} newEl 新DOM元素 * @param {HTMLElement} targetEl 在指定目标DOM元素前插入 */ export function insertAfter(newEl, targetEl) { const parentEl = targetEl.parentNode if (parentEl.lastChild === targetEl) { parentEl.appendChild(newEl) } else { parentEl.insertBefore(newEl, targetEl.nextSibling) } } /** * 判断元素是否隐藏 * @param {HTMLElement} el 元素DOM对象 * @return {boolean} 是否隐藏 */ export function isHidden(el) { const style = window.getComputedStyle(el); return (style.display === 'none' || style.visibility === 'hidden') }