vue实现横向时间轴,并实现右滑加载数据

warning: 这篇文章距离上次修改已过282天,其中的内容可能已经有所变动。

在Vue中实现横向时间轴,并且支持右滑加载数据,可以使用第三方库如vue-timeline或者自己手动编写组件。以下是一个简单的自定义组件示例,实现了基本的横向时间轴和右滑加载数据的功能。




<template>
  <div class="timeline" @scroll="handleScroll">
    <div class="timeline-container" :style="{ 'width': totalWidth + 'px' }">
      <div class="timeline-item" v-for="(item, index) in items" :key="index" :style="{ 'left': item.left + 'px' }">
        <div class="timeline-content">
          {{ item.content }}
        </div>
      </div>
    </div>
    <div v-if="isLoading" class="loading-indicator">
      加载中...
    </div>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      items: [],
      totalWidth: 1000, // 假设总宽度是1000px
      itemWidth: 100, // 每个时间轴项的宽度
      isLoading: false
    };
  },
  methods: {
    handleScroll(event) {
      if (event.target.scrollWidth - (event.target.scrollLeft + event.target.clientWidth) < 50) {
        this.loadMoreData();
      }
    },
    loadMoreData() {
      if (this.isLoading) return;
      this.isLoading = true;
      // 模拟异步加载数据
      setTimeout(() => {
        const newItem = {
          left: this.items.length * this.itemWidth,
          content: `Item ${this.items.length + 1}`
        };
        this.items.push(newItem);
        this.totalWidth += this.itemWidth;
        this.isLoading = false;
      }, 1000);
    }
  },
  mounted() {
    this.loadMoreData(); // 初始加载数据
  }
};
</script>
 
<style scoped>
.timeline {
  overflow-x: auto;
  position: relative;
}
 
.timeline-container {
  position: relative;
  white-space: nowrap;
}
 
.timeline-item {
  position: absolute;
  white-space: normal;
}
 
.timeline-content {
  border: 1px solid #ccc;
  padding: 10px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  margin: 5px 0;
  width: 100px;
}
 
.loading-indicator {
  position: absolute;
  top: 0;
  right: 0;
  padding: 10px;
}
</style>

这个组件包括一个横向的时间轴容器,每个时间轴项目都是通过左侧位置left属性来定位的。当滚动条靠近容器的右边缘时,会触发handleScroll方法,并在该方法中调用loadMoreData来加载更多数据。数据加载时,会通过设置isLoading来显示加载状态,并在数据加载完成后更新时间轴的总宽度。

请注意,这个示例是一个简化的实现,并且没有处理边界情况,如时间轴项的内容太长超出容器宽度的情况。实际应用中需要根据具体需求进行相应的调整和优化。

VUE
最后修改于:2024年08月09日 09:37

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日