文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

vue怎么实现简单无缝滚动效果

2023-06-29 22:43

关注

本篇内容介绍了“vue怎么实现简单无缝滚动效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

效果

vue怎么实现简单无缝滚动效果

实现思路

vue怎么实现简单无缝滚动效果

在vue中如何复制一份列表出来呢且不能丢失绑定的事件,很简单使用slot插槽,使用两个插槽我们就拥有了两个列表

<div class="listScroll" ref="box">    <slot></slot>    <slot></slot></div>

组件完整代码

<template>  <div class="listScroll" ref="box">    <slot></slot>    <slot></slot>  </div></template><script>export default {  name: "listScroll",  created() {},  mounted() {    //在盒子内容高度小于可视高度时不滚动    if (this.boxHeight < this.ele0.clientHeight) {      this.start(this.height);      this.setEvet();    } else {      this.isScroll = false;    }  },  props: {    speed: {      default: 1,      type: Number,    },  },  computed: {    //第一个slot    ele0() {      return this.$refs.box.children[0];    },    //第二个slot    ele1() {      return this.$refs.box.children[1];    },    //盒子的可视高度    boxHeight() {      return this.$refs.box.clientHeight;    },  },  data() {    return {      height: 0,      isScroll: true,    };  },  methods: {    //鼠标移入停止滚动 移出继续滚动    setEvet() {      this.$refs.box.onmouseenter = () => {        this.isScroll = false;        // this.height = 0;      };      this.$refs.box.onmouseleave = () => {        this.isScroll = true;        this.$nextTick(() => {          this.start(this.height);        });      };    },    //滚动方法    start(height) {      this.ele0.style = `transform:translateY(-${height}px);`;      this.ele1.style = `height:${this.boxHeight}px;transform:translateY(-${height}px);overflow: hidden;`;      if (height >= this.ele0.clientHeight) {        this.height = 0;      } else {        this.height += this.speed;      }      if (!this.isScroll) return;      window.requestAnimationFrame(() => {        this.start(this.height);      });    },  },};</script><style lang="less" scoped>.listScroll {  overflow: hidden;}.hover {  overflow-y: auto;}.hide {  display: none;}</style>

使用

<template>  <div class="scroll">    <list-scroll class="box" :speed="1">      <div class="list">        <div class="item" v-for="item in list" :key="item.xh">          <span>{{ item.xh }}</span          ><span>{{ item.label }}</span>        </div>      </div>    </list-scroll>  </div></template><script>import ListScroll from "@/components/listScroll";export default {  name: "scroll",  components: { ListScroll },  data() {    return {      list: new Array(10)        .fill(1)        .map((s, i) => ({ xh: i + 1, label: "hello wrold" })),    };  },};</script><style lang="less" scoped>.box {  height: 300px;}.list {  padding: 0 10px;  width: 300px;  .item {    display: flex;    justify-content: space-between;    padding: 5px 0;    cursor: pointer;    &:hover {      background-color: #95a5a6;    }  }}</style>

“vue怎么实现简单无缝滚动效果”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯