element table表头固定悬浮,element table表头黏性布局,element table表头悬浮窗口

2024-02-24 06:59

本文主要是介绍element table表头固定悬浮,element table表头黏性布局,element table表头悬浮窗口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

element table表头固定悬浮,element table表头黏性布局,element table表头悬浮窗口

  • 效果图
    • 图一
    • 图二
    • 图三
    • 图四
  • 修改方案
  • 使用方法
  • mixins文件代码
  • 添加公用样式

效果图

图一

在这里插入图片描述

图二

![在这里插入图片描述](https://img-blog.csdnimg.cn/b7230fe9193b426db6204c5c4d35e393.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATG9zIHJhaW4=,size_20,color_FFFFFF,t_70,g_se,x_16

图三

![在这里插入图片描述](https://img-blog.csdnimg.cn/f9ec7ac8d2794f55af4fcb7bd09b67a2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATG9zIHJhaW4=,size_20,color_FFFFFF,t_70,g_se,x_16

图四

在这里插入图片描述

修改方案

针对需要table表头黏性布局的页面添加mixins

使用方法

import scroll from '@/views/mixins/scroll'
export default {mixins: [scroll]
}

mixins文件代码

const scorll = {methods: {ishowBottomDiv(bottomDiv, scrollBar, tableBodyDomWrap){if(bottomDiv.getBoundingClientRect().top>document.body.clientHeight){if(scrollBar.style.display === 'none'){scrollBar.style.display = 'block';scrollBar.scrollLeft = tableBodyDomWrap.scrollLeft;}scrollBar.style.display = 'block';} else {scrollBar.style.display = 'none';}}},mounted() {let self = this;let bottomDiv = document.createElement('div');let bar = document.createElement('div');let scrollBar = document.createElement('div');let tableBodyDom = document.querySelector('.el-table__body')let tableBodyDomWrap = document.querySelector('.el-table__body-wrapper')this.$nextTick(() => {let dom = document.querySelector('.el-table')dom.append(bottomDiv);let MutationObserver = window.MutationObserver || window.webkitMutationObserver || window.MozMutationObserver;window.mutationObserver = new MutationObserver(function (mutations) {self.ishowBottomDiv(bottomDiv, scrollBar, tableBodyDomWrap)})window.mutationObserver.observe(dom, {childList: true,subtree: true, // 子节点的变动(新增、删除或者更改)})bar.style.width = tableBodyDom.getBoundingClientRect().width+'px'bar.style.height = '1px'scrollBar.style.width = dom.getBoundingClientRect().width+'px'scrollBar.style.height = '30px'scrollBar.style.overflow = 'auto'scrollBar.style.zIndex = '10000'scrollBar.style.bottom = '0px'scrollBar.style.position = 'fixed'scrollBar.append(bar);dom.append(scrollBar);})window.addEventListener('scroll',() => {let dom = document.querySelector('.el-table')if (!dom) {return}if(scrollBar.style.display === 'block'){tableBodyDomWrap.scrollLeft = scrollBar.scrollLeft;} else {scrollBar.scrollLeft = tableBodyDomWrap.scrollLeft;}self.ishowBottomDiv(bottomDiv, scrollBar, tableBodyDomWrap)let elTable = document.querySelector('.el-table__header-wrapper')let elTableFixed = document.querySelector('.el-table__fixed .el-table__fixed-header-wrapper')let elTableFixedRight = document.querySelector('.el-table__fixed-right .el-table__fixed-header-wrapper')let elTableFixedRightHeader = document.querySelector('.el-table__fixed-right  .el-table__header')if (dom.getBoundingClientRect().top < 64) {if (document.querySelector('.zhanweitablehead')) {//} else {let zhanwei = document.createElement('div')zhanwei.className = 'zhanweitablehead'zhanwei.style.width = elTable.getBoundingClientRect().width + 'px'zhanwei.style.height = elTable.getBoundingClientRect().height + 'px'dom.insertBefore(zhanwei, dom.children[0])}if (elTable) {elTable.style.position = 'fixed'elTable.style.zIndex = '1000'elTable.style.top = '64px'elTable.style.left = '256px'elTable.style.width = dom.getBoundingClientRect().width + 'px'elTable.style.overflow = 'hidden'}if (elTableFixed) {elTableFixed.style.position = 'fixed'elTableFixed.style.zIndex = '10000'elTableFixed.style.top = '64px'elTableFixed.style.left = '256px'elTableFixed.style.width = '320px'elTableFixed.style.overflow = 'hidden'}if (elTableFixedRight) {elTableFixedRight.style.width = document.querySelector('.el-table__fixed-right').style.widthelTableFixedRight.style.position = 'fixed'elTableFixedRight.style.zIndex = '10000'elTableFixedRight.style.top = '64px'elTableFixedRight.style.height = '50px'elTableFixedRight.style.right = '36px'elTableFixedRight.style.overflow = 'hidden'elTableFixedRightHeader.style.position = 'absolute'elTableFixedRightHeader.style.right = '0'}} else {if (!dom) {return}if (document.querySelector('.zhanweitablehead')) {document.querySelector('.el-table').removeChild(document.querySelector('.zhanweitablehead'))}if (elTable) elTable.style = {}if (elTableFixed) elTableFixed.style = {}if (elTableFixedRight) elTableFixedRight.style = {}if (elTableFixedRightHeader)elTableFixedRightHeader.style.position = 'initial'}},true)},destroyed() {window.removeEventListener('scroll');window.mutationObserver.disconnect();},
}
export default scorll;

添加公用样式

.is-scrolling-left ~ .el-table__fixed-right,.is-scrolling-middle ~ .el-table__fixed-right {.el-table__fixed-header-wrapper {border-left: 2px solid #d6d6d657;}}.is-scrolling-right ~ .el-table__fixed,.is-scrolling-middle ~ .el-table__fixed {.el-table__fixed-header-wrapper {border-right: 2px solid #d6d6d657;}}

这篇关于element table表头固定悬浮,element table表头黏性布局,element table表头悬浮窗口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/741311

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

Apache Tiles 布局管理器

陈科肇 =========== 1.简介 一个免费的开源模板框架现代Java应用程序。  基于该复合图案它是建立以简化的用户界面的开发。 对于复杂的网站,它仍然最简单,最优雅的方式来一起工作的任何MVC技术。 Tiles允许作者定义页面片段可被组装成在运行一个完整的网页。  这些片段,或Tiles,可以用于为了降低公共页面元素的重复,简单地包括或嵌入在其它瓦片,制定了一系列可重复使用

【CSS in Depth 2 精译_023】第四章概述 + 4.1 Flexbox 布局的基本原理

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 第三章 文档流与盒模型(已

ConstraintLayout布局里的一个属性app:layout_constraintDimensionRatio

ConstraintLayout 这是一个约束布局,可以尽可能的减少布局的嵌套。有一个属性特别好用,可以用来动态限制宽或者高app:layout_constraintDimensionRatio 关于app:layout_constraintDimensionRatio参数 app:layout_constraintDimensionRatio=“h,1:1” 表示高度height是动态变化

hot100刷题第1-9题,三个专题哈希,双指针,滑动窗口

求满足条件的子数组,一般是前缀和、滑动窗口,经常结合哈希表; 区间操作元素,一般是前缀和、差分数组 数组有序,更大概率会用到二分搜索 目前已经掌握一些基本套路,重零刷起leetcode hot 100, 套路题按套路来,非套路题适当参考gpt解法。 一、梦开始的地方, 两数之和 class Solution:#注意要返回的是数组下标def twoSum(self, nums: Lis

主窗口的设计与开发(二)

主窗口的设计与开发(二) 前言         在上一集当中,我们完成了主窗口的初始化,主窗口包括了左中右三个区域。我们还完成了对左窗口的初始化,左窗口包括了用户头像、会话标签页按钮、好友标签页按钮以及好友申请标签页按钮。对于切换每个标签页,我们还做了初始化信号槽的内容。最后我们将整个MainWidget类设置为单例模式。         那么这一集我们将继续完成主窗口的设计与开发,这一集我