网站建设定制开发el-table 横向滚动条固定在可视窗口底部

    网站建设定制开发有一个需求,网站建设定制开发当的宽度超出浏览器宽度时,虽然el_table网站建设定制开发底部会出现滚动条,网站建设定制开发但是每次需要先滚动到底部,才能使用el-table的滚动体,很是麻烦。因此当el_table的宽度超出屏幕宽度时,要在可视范围底部添加一个横向的滚动条,在网上找了四篇不同方法,全都试了一遍,四个方法的原文地址以及效果图我都贴出来了,看个人选择了,我自己用的第二个,一个大佬写的。

方法1、在el-table上手动添加滚动条

参考原文链接

1、在el-table上方添加一个div,div的宽度和表格的宽度相同。

  1. <div ref="topScroll" class="top-scroll">
  2. <div class="top-scroll-content" :style="{ width: topScrollWidth }"></div>
  3. </div>
  4. <el-table ref="tableRef" :data="list" v-loading.body="listLoading">
  5. </el-table>

 给两个div添加样式,里面的div一定要设置高度,不设置的话滚动条出不来

  1. .top-scroll {
  2. width: 100%;
  3. overflow-x: auto;
  4. }
  5. .top-scroll-content {
  6. /* 高度不设置的话滚动条出不来 */
  7. height: 1px;
  8. }

2、给滚动条设置初始值

  1. data(){
  2. return{
  3. topScrollWidth: 0,
  4. tableDom: null,
  5. }
  6. },
  7. methods:{
  8. setScrollWidth() {
  9. //设置顶部滚顶条宽度值为表格的滚动宽度
  10. this.$nextTick(() => {
  11. this.topScrollWidth = this.$refs.tableRef.bodyWrapper.scrollWidth + 'px';
  12. })
  13. },
  14. getList(){
  15. //在获取数据后,设置顶部滚动条的宽度
  16. getListPer(data).then(res => {
  17. this.list = res.list;
  18. this.setScrollWidth();
  19. this.listLoading = false;
  20. })
  21. }
  22. }

3、在watch中监听滚动条宽度值,实现两个滚动条同步

  1. watch:{
  2. topScrollWidth: {
  3. // 两个滚动条同时滚动
  4. handler(newVal, oldVal) {
  5. // 监听滚动条
  6. this.$nextTick(() => {
  7. this.tableDom = this.$refs.tableRef.bodyWrapper
  8. this.tableDom.addEventListener('scroll', () => {
  9. // 表格顶部滚动条与底部同步
  10. let scrollLeft = this.tableDom.scrollLeft
  11. this.$refs.topScroll.scrollTo(scrollLeft, 0);
  12. })
  13. let topScroll = this.$refs.topScroll
  14. topScroll.addEventListener('scroll', () => {
  15. // 表格底部滚动条与顶部同步
  16. let scrollLeft = this.$refs.topScroll.scrollLeft
  17. this.$refs.tableRef.bodyWrapper.scrollTo(scrollLeft, 0);
  18. })
  19. })
  20. },
  21. deep: true
  22. },
  23. },

4、监听浏览器的缩放操作,并在页面销毁时清除监听

  1. mounted() {
  2. this.getList()
  3. //监听浏览器的缩放操作
  4. window.addEventListener("resize", () => {
  5. this.setScrollWidth();
  6. })
  7. },
  8. beforeDestroy() {
  9. //清除监听
  10. window.removeEventListener("resize", () => {
  11. this.setScrollWidth();
  12. })
  13. },

效果图

 方法2、使用v-horizontal-scroll

网上一个大佬写的,是真的厉害

源码仓库地址

如何使用

安装

npm install el-table-horizontal-scroll

注册指令

  1. import horizontalScroll from 'el-table-horizontal-scroll'
  2. Vue.use(horizontalScroll)

或者

  1. import horizontalScroll from 'el-table-horizontal-scroll'
  2. export default {
  3. directives: {
  4. horizontalScroll
  5. }
  6. }

在el-table上添加v-horizontal-scroll

可以使用 always 或 hover ,默认值为hover,将鼠标悬停在表格上时,该栏将显示;

或者可以将其更改为always,并使栏始终显示

  1. <el-table :data="data" v-horizontal-scroll="'always'">
  2. </el-table>

效果图(我自己就是选的这个方法,个人觉得比其他方法好)

方法3:el-table添加max-height

原文链接:

方法是给el-table添加一个max-height值,在页面渲染时动态计算值。

  1. <el-table :max-height="maxHeight"></el-table>
  2. mouted(){
  3. this.$nextTick(()=>{
  4. this.maxHeight = window.innerHeight - 300;//300是页面中除了表格外其他组件的高度
  5. })
  6. }

效果图

方法4:使用CSS 

原文链接:

 html:

  1. <div class="table-parent" @contextmenu.prevent.capture>
  2. <el-table :data="excelData" border class="table-box">
  3. </el-table>
  4. </div>

@contextmenu.prevent.capture 阻止浏览器默认右键行为, 事件修饰符capture给元素添加一个监听器,当元素发生冒泡时,先触发带有该修饰符的元素

css:

  1. .table-parent {
  2.   position: absolute;
  3.   overflow: auto;
  4. }
  5. .table-parent .table-box {
  6.   position: relative;
  7.   min-width: 1300px;
  8.   overflow: auto;
  9. }

   将el-table的宽度放大后,页面底部会出现横向滚动条,但是如果el-table上方的布局已经被写死了,会出现留白

效果图:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发