javascript element-ui@1.x版动态隐藏表格固定列边样式的指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript element-ui@1.x版动态隐藏表格固定列边样式的指令相关的知识,希望对你有一定的参考价值。

const ElementTableCtx = '__ElementTableCtx';
function setShadowStyle(els, style) {
  for (const el of els) {
    el.style.boxShadow = style;
  }
}
export default function install(Vue) {
  Vue.directive('dynamic-fixed-column', {
    bind(el, binding) {
      function onScroll() {
        const { fixedEls, fixedRightEls, maxScrollWidth } = el[ElementTableCtx];
        let shadowStyle = null;
        if (this.scrollLeft === 0) {
          shadowStyle = 'none';
        } else {
          shadowStyle = null;
        }
        setShadowStyle(fixedEls, shadowStyle);

        if (this.scrollLeft === maxScrollWidth) {
          shadowStyle = 'none';
        } else {
          shadowStyle = null;
        }
        setShadowStyle(fixedRightEls, shadowStyle);
      }

      const bodyWrapper = el.querySelector('.el-table__body-wrapper');
      bodyWrapper.addEventListener('scroll', onScroll);

      el[ElementTableCtx] = {
        onScroll,
        expression: binding.expression,
        fixedEls: [],
        fixedRightEls: [],
        scrollEl: bodyWrapper,
        maxScrollWidth: 0,
        inited: false
      };
    },
    componentUpdated(el) {
      const { scrollEl } = el[ElementTableCtx];
      // if (inited) {return }
      const fixedEls = el.querySelectorAll('.el-table__fixed');
      const fixedRightEls = el.querySelectorAll('.el-table__fixed-right');
      if (fixedEls.length) {
        const maxScrollWidth = scrollEl.scrollWidth - scrollEl.clientWidth;

        el[ElementTableCtx].inited = true;
        el[ElementTableCtx].fixedEls = fixedEls;
        el[ElementTableCtx].fixedRightEls = fixedRightEls;
        el[ElementTableCtx].maxScrollWidth = maxScrollWidth;
        setShadowStyle(fixedEls, 'none');
      }
    },
    unbind(el) {
      const { scrollEl, onScroll } = el[ElementTableCtx];
      scrollEl.removeEventListener('scroll', onScroll);
    }
  });
}

以上是关于javascript element-ui@1.x版动态隐藏表格固定列边样式的指令的主要内容,如果未能解决你的问题,请参考以下文章

javascript element-ui@1.x版本,如果需要把表第一列作为汇总列,并且表格高度大于屏幕高度,向下滚动式使第一行固定在屏幕顶部

解决elemnt-ui安装后运行报错的问题

element-ui 组件扩展 - dialog嵌套问题

JavaScript介绍

javascript的题。

javascript JavaScript isset()等效: - JavaScript