替换字体图标

This commit is contained in:
kuaifan 2023-08-04 10:57:30 +08:00
parent e176600a5a
commit 4f7259747c
8 changed files with 82 additions and 1 deletions

View File

@ -0,0 +1,81 @@
// 滚动超出隐藏
const scrollActive = {
bind: function (el, binding) {
let element = binding.value;
let activeClass = 'active';
let inactiveClass = 'inactive';
el.__vueScrollActiveMain__ = null;
if ($A.isJson(binding.value)) {
if (binding.value.main) {
el.__vueScrollActiveMain__ = binding.value.main
}
if (binding.value.element) {
element = binding.value.element;
}
if (binding.value.activeClass) {
activeClass = binding.value.activeClass;
}
if (binding.value.inactiveClass) {
inactiveClass = binding.value.inactiveClass;
}
}
if (!element) {
return;
}
const main = el.__vueScrollActiveMain__ ? el.querySelector(el.__vueScrollActiveMain__) : el;
//
el.__vueScrollActiveListener__ = (e) => {
const containerRect = e.target.getBoundingClientRect()
const items = e.target.querySelectorAll(element)
items.forEach((item, index) => {
const itemRect = item.getBoundingClientRect()
if (
itemRect.top < containerRect.bottom && itemRect.bottom > containerRect.top &&
itemRect.left < containerRect.right && itemRect.right > containerRect.left
) {
activeClass && item.classList.add(activeClass)
inactiveClass && item.classList.remove(inactiveClass)
} else {
activeClass && item.classList.remove(activeClass)
inactiveClass && item.classList.add(inactiveClass)
}
})
}
main.addEventListener("scroll", el.__vueScrollActiveListener__);
//
let initialHeight = 0;
let initialWidth = 0;
el.__vueScrollActiveObserver__ = new MutationObserver(function (mutations) {
// 遍历每个发生变化的 mutation
mutations.forEach(function (mutation) {
if (mutation.type === "childList") {
const childElements = main.querySelectorAll(element)
if (childElements.length === 0) {
return;
}
const lastSpecifiedElement = childElements[childElements.length - 1].getBoundingClientRect();
const lastWidth = lastSpecifiedElement.right;
const lastHeight = lastSpecifiedElement.bottom;
if (lastHeight != initialHeight || lastWidth != initialWidth) {
initialHeight = lastHeight;
initialWidth = lastWidth;
el.__vueScrollActiveListener__({target: el});
}
}
});
});
el.__vueScrollActiveObserver__.observe(main, { childList: true, subtree: true });
},
// 指令与元素解绑的时候,移除事件绑定
unbind(el) {
const main = el.__vueScrollActiveMain__ ? el.querySelector(el.__vueScrollActiveMain__) : el;
main.removeEventListener('scroll', el.__vueScrollActiveListener__);
delete el.__vueScrollActiveListener__;
//
el.__vueScrollActiveObserver__.disconnect();
delete el.__vueScrollActiveObserver__;
}
}
export default scrollActive

View File

@ -2306,7 +2306,7 @@ export default {
if (selectText.length > 0) {
this.operateCopys.push({
type: 'selected',
icon: '&#xe77f;',
icon: '&#xe7df;',
label: '复制选择',
value: selectText,
})