广告
返回顶部
首页 > 资讯 > 精选 >vue如何实现列表固定列滚动
  • 415
分享到

vue如何实现列表固定列滚动

2023-07-02 17:07:58 415人浏览 安东尼
摘要

这篇文章主要介绍了Vue如何实现列表固定列滚动的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何实现列表固定列滚动文章都会有所收获,下面我们一起来看看吧。功能介绍:在移动端开发中,会用到列表作为信息展示方

这篇文章主要介绍了Vue如何实现列表固定列滚动的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何实现列表固定列滚动文章都会有所收获,下面我们一起来看看吧。

功能介绍:

在移动端开发中,会用到列表作为信息展示方式,一般希望上下滚动时,可以固定表头,左右滚动时,可以固定最左列。

大致需求:

列表可以使用数组循环遍历;
2、上下滚动时,可以固定表头在最顶端显示;
3、左右滚动时,可以固定左边一列或多列可以固定显示;
4、列表的列宽允许在数组中设置;

整体思路:

页面使用四个bom元素分别存储四种元素:

1)固定在左上角,完全不参与滚动表头元素;
2)固定在顶部,只允许左右滚动表头元素;
3)固定在左侧,只允许上下滚动列元素;
4)右下角,左右上下均可随意滚动列元素;

表头数组与列表数据数组之间互相联系,表头属性可以控制列表列排序、列表宽度、是否为固定列等;

四个dom之间增加联动,使用@scroll、scrollLeft、scrollTop;

具体实现:

一、display:flex布局,分为四组容器布局:

vue如何实现列表固定列滚动

<!-- 宽度增加动态设置 --><div class="box">  <div class="table-box">    <div class="fixedHeadBox"       :></div>    <div class="nomalHeadBox"          ></div>    <div class="fixedListBox"       :></div>      <div class="nomalListBox"        :      ></div>    </div>  </div></div>
export default {  data() {    return {      fixedWid: ''    };  }}
.box {  width: 100vw; height: 100vh;  box-sizing: border-box;  padding: 5vh 5vw;  background: #000;}$headHei: 40px;.table-box {  width: 100%; height: 100%;  display: flex;  flex-wrap: wrap;  overflow: hidden;    .fixedHeadBox {      background: pink;      height: $headHei;    }    .nomalHeadBox {      background: yellow;      height: $headHei;      overflow: hidden;    }    .fixedListBox{      height: calc(100% - #{$headHei});      background: lightblue;      overflow: hidden;    }    .nomalListBox {      background: #fff;      height: calc(100% - #{$headHei});      overflow: auto;    }}

二、列表头部、内部数据绑定:

应用到v-for遍历表头、列表数据,并计算列表宽度:

<div class="fixedHeadBox" :>  <ul>    <li v-for="(item, index) in fixedHead" :key="index"       :>        {{item.name}}    </li>  </ul></div><div class="nomalHeadBox"  :>  <div ref="nomalHeadBox">    <ul :>      <li v-for="(item, index) in nomalHead"         :key="index" :>        {{item.name}}      </li>    </ul>  </div></div><div class="fixedListBox" :>  <div ref="fixedListBox">    <ul v-for="(item, index) in list" :key="index" >      <li v-for="(it, index) in fixedHead" :key="index"         :>        {{item[it.prop]}}      </li>    </ul>  </div></div><div class="nomalListBox" ref="nomalListBox"  :>  <ul :     v-for="(item, index) in list" :key="index">    <li v-for="(it, index) in nomalHead" :key="index"       :>      {{item[it.prop]}}    </li>  </ul></div>
data() {  return {    tableHead: [      { name: '', prop: 'a', width: '100px', isfixed: true },      { name: '', prop: 'b', width: '80px' },      { name: '', prop: 'c', width: '80px' },      { name: '', prop: 'd', width: '100px' },      { name: '', prop: 'e', width: '100px' },      { name: '', prop: 'f', width: '100px' },      { name: '', prop: 'g', width: '120px' }    ],    list: [      { a: '', b: '', c: '', d: '', e: '', f: '', g: '' }    ],    fixedHead: [],    nomalHead: [],    fixedWid: '',    nomalWid: ''  };},mounted() {  this.initData();},methods: {  initData() {    this.fixedHead = this.tableHead.filter((item) => {      return item.isfixed    });    this.nomalHead = this.tableHead.filter((item) => {      return !item.isfixed    });    this.initSize();  },  initSize() {    let fwid = 0; let nwid = 0;    this.fixedHead.forEach((item) => {      // 此处以px单位为例      const len = item.width.length - 2;      const width = item.width.substring(0, len) - 0;      fwid += width;    });    this.nomalHead.forEach((item) => {      const len = item.width.length - 2;      const width = item.width.substring(0, len) - 0;      nwid += width;    });    this.fixedWid = fwid + 'px';    this.nomalWid = nwid + 'px';  }}

三、列表滚动联动:

除左上角元素外,其余三个元素均有联动滚动效果,增加滚动监听事件@scroll。

<div class="nomalHeadBox"    :>    <div ref="nomalHeadBox" @scroll="scrollHList">        ......    </div></div><div class="fixedListBox" :>    <div ref="fixedListBox" @scroll="scrollFList">        ......    </div></div><div class="nomalListBox" ref="nomalListBox"    @scroll="scrollList"    :>    ......</div>
methods: {  scrollHList() {    this.$refs.nomalListBox.scrollLeft =      this.$refs.nomalHeadBox.scrollLeft;  },  scrollFList() {    this.$refs.nomalListBox.scrollTop =      this.$refs.fixedListBox.scrollTop;  },  scrollList() {    this.$refs.fixedListBox.scrollTop =      this.$refs.nomalListBox.scrollTop;    this.$refs.nomalHeadBox.scrollLeft =      this.$refs.nomalListBox.scrollLeft;  }}

四、去除头部、左侧列表滚动标签的滚动条:

.nomalHeadBox {    >div {        overflow: auto;        height: calc(100% + 10px);    }}.fixedListBox{    >div {        overflow: auto;        height: 100%;        width: calc(100% + 10px);    }}

关于“vue如何实现列表固定列滚动”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“vue如何实现列表固定列滚动”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: vue如何实现列表固定列滚动

本文链接: https://www.lsjlt.com/news/343531.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现列表固定列滚动
    目录功能介绍:大致需求:整体思路:具体实现:一、display:flex布局,分为四组容器布局:二、列表头部、内部数据绑定:三、列表滚动联动:四、去除头部、左侧列表滚动标签的滚动条:...
    99+
    2022-09-27
  • vue如何实现列表固定列滚动
    这篇文章主要介绍了vue如何实现列表固定列滚动的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何实现列表固定列滚动文章都会有所收获,下面我们一起来看看吧。功能介绍:在移动端开发中,会用到列表作为信息展示方...
    99+
    2023-07-02
  • vue实现列表无缝滚动
    本文实例为大家分享了vue实现列表无缝滚动的具体代码,供大家参考,具体内容如下 HTML部分代码 <template> <div id="box" clas...
    99+
    2022-11-12
  • vue实现列表无缝循环滚动
    本文实例为大家分享了vue实现列表无缝循环滚动的具体代码,供大家参考,具体内容如下 功能介绍: 在PC端网页,包括大数据、官网、后台管理平台开发中,可能会用到这种列表循环滚动的展示。...
    99+
    2022-09-27
  • vue实现列表垂直无缝滚动
    本文实例为大家分享了vue实现列表垂直无缝滚动的具体代码,供大家参考,具体内容如下 实现新闻列表的轮播(如下图) 上代码 封装的so-marquee.vue <templat...
    99+
    2022-11-13
  • vue实现列表无缝滚动效果
    本文实例为大家分享了vue实现列表无缝滚动效果的具体代码,供大家参考,具体内容如下 1.安装 npm install vue-seamless-scroll --save 2.在需要...
    99+
    2022-11-13
  • 如何利用纯css实现table固定列与表头中间横向滚动的
    这篇文章主要介绍如何利用纯css实现table固定列与表头中间横向滚动的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!文字被强制换行了由于个别表的列数较多;文字都挤在一起向下换行了;现场惨不忍睹;于是采用强制不换行的...
    99+
    2023-06-08
  • js如何实现列表循环滚动
    本篇内容主要讲解“js如何实现列表循环滚动”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“js如何实现列表循环滚动”吧!先介绍几个属性clientHeight 元素的高度clientTop 元素顶...
    99+
    2023-07-02
  • Android程序开发之ListView实现横向滚动(带表头与固定列)
    问题背景:在做图表展示的时候,ListView可以上下左右滑动,但最左边一列在向右滑动时,保持不变,表头在向下滑动时保持不变。 有用两个ListView实现的,但测试过,好像有...
    99+
    2022-06-06
    listview Android
  • 基于vue实现循环滚动列表功能
    注意:需要给父容器一个height和:data='Array'和overfolw:hidden;左右滚动需要给ul容器一个初始化 css width。 先来介绍该组件的用法: 1.安...
    99+
    2022-11-12
  • vue怎么实现列表垂直无缝滚动
    这篇文章主要介绍“vue怎么实现列表垂直无缝滚动”,在日常操作中,相信很多人在vue怎么实现列表垂直无缝滚动问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么实现列表垂直无缝滚动”的疑惑有所帮助!接下来...
    99+
    2023-06-29
  • js实现列表循环滚动
    本文实例为大家分享了js实现列表循环滚动的具体代码,供大家参考,具体内容如下 先介绍几个属性 clientHeight 元素的高度clientTop 元素顶部边框的宽度scrollT...
    99+
    2022-11-13
  • vue或css动画实现列表向上无缝滚动
    本文实例为大家分享了vue或css动画实现列表向上无缝滚动的具体代码,供大家参考,具体内容如下 方法一:vue的实现方法 <div id="publishMain" clas...
    99+
    2022-11-13
  • vue如何通过滚动行为实现从列表到详情
    这篇文章主要介绍了vue如何通过滚动行为实现从列表到详情,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue项目滚动行为场景:项目中,从列表...
    99+
    2022-10-19
  • JQuery如何实现文字列表向上滚动
    这篇文章给大家分享的是有关JQuery如何实现文字列表向上滚动的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。jQuery实现代码如下:<script type="...
    99+
    2022-10-19
  • js如何实现列表自动滚动循环播放
    这篇文章主要介绍了js如何实现列表自动滚动循环播放的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js如何实现列表自动滚动循环播放文章都会有所收获,下面我们一起来看看吧。1.实现效果图鼠标移入,暂停滚动; 鼠标移...
    99+
    2023-07-02
  • vue或css怎么实现列表向上无缝滚动动画
    本篇内容主要讲解“vue或css怎么实现列表向上无缝滚动动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue或css怎么实现列表向上无缝滚动动画”吧!效果如下:方法一:vue的实现方法<...
    99+
    2023-06-29
  • css如何实现两列固定与一列自适应
    这篇文章将为大家详细讲解有关css如何实现两列固定与一列自适应,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.flex布局Flexible Box 模型,通常被称为 flexbox,是一种一维的布局模型...
    99+
    2023-06-08
  • element 表格多级表头子列固定的实现
    element 中 table 固定列使用fixed 属性;但是多级表头时只能固定第一列; 设置对应子列表头的宽度和父系表头的宽度可以使对应的列固定; 不需要固定的列则不需要设置宽度...
    99+
    2022-11-13
  • js实现列表自动滚动循环播放
    本文实例为大家分享了js实现列表自动滚动循环播放的具体代码,供大家参考,具体内容如下 1.实现效果图 鼠标移入,暂停滚动; 鼠标移出,继续滚动; 2.原理 要实现无缝衔接,在原有u...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作