vue-div,文字无限滚动效果

摘要:
{item.name}}*{margin:0;padding:0;
<template>
  <div>
    <div class="father-cont">
      <ul   id="scroll-box">
        <li v-for=" item in list" :key="item.name">
          <span>{{item.name}}</span>
        </li>
      </ul>
    </div>
  </div>
</template>
<style lang="less" scoped>
* {
  margin: 0;
  padding: 0;
  list-style: none;
}
.father-cont {
  margin-left: 300px;
   200px;
  height: 100px;
  overflow: hidden;
}
.fa-scroll-cont {
  border: 1px solid red;

  li {
     100%;
    padding: 10px auto;
    border-bottom: 1px solid #999999;
  }
}
</style>

可以看出来DOM结构

vue-div,文字无限滚动效果第1张

<script>
export default {
  name: '',
  components: {},
  mixins: [],
  props: {},
  data() {
    return {
      list: [
        { name: '小A', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小B', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小C', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小D', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小E', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小F', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小G', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小H', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小I', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' },
        { name: '小J', city: 'AAAAAAAAAAAAAAAAAAAAAAAAA' }
      ]
    };
  },
  watch: {},
  computed: {},
  created() {},
  mounted() {
    this.scroll();
  },
  destroyed() {},
  methods: {
    scroll() {
      const dom = document.getElementById('scroll-box');
      const that = this;
      let timer = null;
      const animationEndHandler = evt => {
        const dom = document.getElementById('scroll-box');
        dom.style.cssText = 'transform:translate(0,0)';
        dom.appendChild(dom.children[0]); //把第一个DOM添加到最后一个去
      };
      const mouseEnterHander = evt => {
        clearInterval(timer);
      };
      const initInterval = () => {
        timer = setInterval(() => {
          if (dom.children[0]) {
            let scrollHeight = dom.children[0].offsetHeight;
            scrollHeight = parseInt(scrollHeight);
            dom.style.cssText = `transform:translate(0px,-${scrollHeight + 8}px);transition:all 2s ease;`;
          }
        }, 3000);
      };
      const mouseLeaveHandler = () => {
        initInterval();
      };
      dom.addEventListener('mouseenter', mouseEnterHander);
      dom.addEventListener('mouseleave', mouseLeaveHandler);
      dom.removeEventListener('transitionend', animationEndHandler);
      dom.addEventListener('transitionend', animationEndHandler); //只要监听到translate就会执行,这样就能一直动了
      initInterval();
    }
  }
};
</script>

最主要的为

dom.addEventListener('transitionend' 写法

免责声明:文章转载自《vue-div,文字无限滚动效果》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL试题集(一)centos8平台上php7.4的生产环境配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

vsCode mongoDB插件 Azure Cosmos DB

安装完成后,要重启下vsCode会看到然后点击绿色的小按钮,选择MongoDB再输入MongoDB的连接地址。当然要先把本地的mongoDB数据库打开,cmd黑窗口输入mongod--dbpathxxxx打开本地数据库输入完成地址后,回车就可以连接到自己的MongoDB数据库了...

ubuntu中VNC的安装配置笔记

设置密码并首次启动vncserver后。vnc/directory将在用户的主目录中生成。注意:安装后,用户的主目录中没有vnc目录。这是因为默认情况下启用了桌面配置,并且需要修改配置文件。后来,我在网上找到了一篇可靠的文章:http://blog.csdn.net/njchenyi/article/details/8489689本文中描述的配置方法确实可行...

SpringBoot入门 (三) 日志配置

上一篇博客文章记录了在spring-boot项目中读取的属性文件中配置的属性。本文将学习如何登录springboot项目。SpringBoot在内部使用CommonsLogging进行日志记录,但它也为其他日志记录框架提供默认配置,如JavautilLogging、Log4j2和Logback。在每种情况下,日志记录器都预先配置为使用控制台输出和可选文件输出...

Nacos开机自启

1.加入玉米片。服务文件vi/lib/systemd/system/nacos.service2.将以下内容写入nacos。服务文件ps:我的nacos路径是/usr/local/nacos[Unit]Description=nacosAfter=network。target[Service]Type=forkingExecStart=/usr/local/...

CefSharp 浏览器核心,爬虫

CefSharp是什么Aframeworkforembeddingweb-browsing-likecapabilitiestoastandard.NETapplication(WPForWindowsForms).Asetofhigh-levelcustomcontrolstomakeitreasonablyeasytointegratethesecapa...

文件(夹)对比利器WinMerge

IDE中自带的svn功能较弱,还好有winMerge弥补了它的缺陷,它可以对比文件、文件夹,使用起来还是较为方便,界面也是中文。“开始”菜单,弹出对话框中选择需要进行对比的文件夹或文件然后选择一个过滤器,它自带就可以过滤掉svn目录,如需要过滤其它一些指定的目录,则需要自己修改过滤器的规则了,也很简单。...