DEMO:

<!DOCTYPE html>
<html>

<head>
  <title>滚动播报</title>
  <meta charset="UTF-8">
  <style>
    .content {
      height: 60px;
      background-color: #2c2c34;
      overflow: hidden;
    }

    .content ul {
      white-space: nowrap;
    }

    .content ul li {
      position: relative;
      font-size: 14px;
      vertical-align: middle;
      line-height: 35px;
      padding: 0 8px;
      white-space: nowrap;
      display: inline-block;
      color: #fff
    }

    #scrollBox {
      overflow: hidden;
    }

    #scrollBox .scrollWrap {
      width: 500%
    }

    .scrollCont {
      float: left;
    }
  </style>
</head>

<body>
  <div class="content">
    <ul>
      <div id="scrollBox">
        <div class="scrollWrap">
          <div id="scrollContOne" class="scrollCont">
            <li>我是第一条数据</li>
            <li>我是第二条数据</li>
            <li>我是第三条数据</li>
            <li>我是第四条数据</li>
            <li>我是第五条数据</li>
            <li>我是第六条数据</li>
            <li>我是第七条数据</li>
            <li>我是第八条数据</li>
          </div>
          <div id="scrollContTwo" class="scrollCont"></div>
        </div>
      </div>
    </ul>
  </div>

  <script>
    let speed = 40

    let scrollBox = document.getElementById("scrollBox");

    let scrollContOne = document.getElementById("scrollContOne");

    let scrollContTwo = document.getElementById("scrollContTwo");

    scrollContTwo.innerHTML = scrollContOne.innerHTML;

    scrollBox.scrollLeft = 0;

    function scrollRadio() {

      if (scrollBox.scrollLeft >= scrollContTwo.offsetWidth) {

        scrollBox.scrollLeft -= scrollContOne.offsetWidth

      } else {

        scrollBox.scrollLeft += 2;

      }

    }

    let MyScrollRadio = setInterval(scrollRadio, speed);

    scrollBox.onmouseover = function() {

      clearInterval(MyScrollRadio)

    };

    scrollBox.onmouseout = function() {

      MyScrollRadio = setInterval(scrollRadio, speed)

    };

  </script>

</body>

</html>

在Vue中使用:

<template>

  <div class="content">

    <ul>

      <div id="scrollBox">

        <div class="scrollWrap">

          <div id="scrollContOne" class="scrollCont">

            <li v-for="item in items">

              <a href="{{item}" target="_blank"></a>

            </li>

          </div>

          <div id="scrollContTwo" class="scrollCont"></div>

        </div>

      </div>

    </ul>

  </div>

</template>

<style scoped>

  .content {

    height: 60px;

    background-color: #2c2c34;

    overflow: hidden;

  }

  .content ul {

    white-space: nowrap;

  }

  .content ul li {

    position: relative;

    font-size: 14px;

    vertical-align: middle;

    line-height: 35px;

    padding: 0 8px;

    white-space: nowrap;

    display: inline-block;

  }

  .content ul li a {

    text-decoration: none;

    color:#fff;
  }

  #scrollBox {

    overflow: hidden;

    margin-left: 36px;

  }

  #scrollBox .scrollWrap {

    width: 500%

  }

  .scrollCont {

    float: left;

  }

</style>

<script>

export default {

  data: () => ({

    canScrollTimer: 0

  }),

  vuex: {
            getters: {
                scrollLists: state => state.scrollLists
            }
        },

  watch:{

   scrollLists:{

    deep:true,

    handler(v,ov){

      if(v.length){

          this.run();

        }

      }

    } 

  },

  methods: {

    run() {

      let speed = 40;

      let scrollBox = document.getElementById("scrollBox");

      let scrollContOne = document.getElementById("scrollContOne");

      let scrollContTwo = document.getElementById("scrollContTwo");

      scrollContTwo.innerHTML = scrollContOne.innerHTML;

      scrollBox.scrollLeft = 0;

      function scrollRadio() {

        if (scrollBox.scrollLeft >= scrollContTwo.offsetWidth) {

          scrollBox.scrollLeft -= scrollContOne.offsetWidth

        } else {

          scrollBox.scrollLeft += 2;

        }
      }

      let MyScrollRadio = setInterval(scrollRadio, speed);

      scrollBox.onmouseover = function() {

        clearInterval(MyScrollRadio)

      };

      scrollBox.onmouseout = function() {

        MyScrollRadio = setInterval(scrollRadio, speed)

      };

    }

  },

  ready() {

    //接口调用

  }

}

</script>

Js跑马灯效果 && 在Vue中使用的更多相关文章

  1. js跑马灯效果

    function nextPage() {           /*         克隆第一张图片并添加到box后         box前移一张图片的距离动画         动画回调里把box的 ...

  2. vue实现跑马灯效果

    vue实现跑马灯效果为阿中哥哥应援 1.效果图 2.实现代码 <!DOCTYPE html> <html lang="en"> <head> & ...

  3. Vue学习笔记四:跑马灯效果

    目录 跑马灯原理 HTML 箭头函数 计时器 跑马灯效果 跑马灯原理 先讲讲跑马灯的原理,就是一行字,会滚动,思路是这样的,使用substring方法,一个获取字符串的第一个字,一个获取1后面所有的字 ...

  4. 黑马vue---10-11、Vue实现跑马灯效果

    黑马vue---10-11.Vue实现跑马灯效果 一.总结 一句话总结: 1. 给 [浪起来] 按钮,绑定一个点击事件   v-on   @ 2. 在按钮的事件处理函数中,写相关的业务逻辑代码:拿到 ...

  5. VUE小案例--跑马灯效果

    自学Vue课程中学到的一个小案例,跑马灯效果 <!DOCTYPE html> <html lang="zh-CN"> <head> <me ...

  6. JS实现跑马灯效果(向左,向上)

    <html> <head> <title>JS实现跑马灯效果</title> <style> * { font-size:12px; fon ...

  7. 微信小程序跑马灯效果--基于CSS3 animation 及 基于JS

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 基于CSS3主要代码实现 效果图: 视图模板wxml中: <view class=&qu ...

  8. JS写一个列表跑马灯效果--基于touchslide.js

    先放上效果图: 类似于这样的,在列表中循环添加背景样式的跑马灯效果. 准备引入JS插件: <script type="text/javascript" src="x ...

  9. vue学习第二天:Vue跑马灯效果制作

    分析: 1. 给开始按钮绑定一个点击事件 2.在按钮的事件处理函数中,写相关的业务代码 3.拿到msg字符串 4.调用字符串的substring来进行字符串的截取操作 5.重新赋值利用vm实例的特性来 ...

随机推荐

  1. C语言关于指针的注意事项

    一.指针的四个关键概念1.指针的类型2.指针指向的类型3.指针的值,也就是指针指向的地址4.指针自己所占用的内存空间注意:指针变量所存的内容就是内存的地址编号! 例如:int **pp = NULL; ...

  2. keil5 mdk调用外部编辑器notepad++、sublime3、VSCode总结

    1.打开keil主界面,点击菜单栏Tools菜单,选择如下图所示的选项. 2.点击如下图所示的菜单上红笔标注的地方,给这个工具命名,如notepad++.sublime3.vscode等,如下图, 并 ...

  3. hive的desc命令

    desc命令 desc 命令是为了展示hive表格的内在属性.例如列名,data_type,存储位置等信息.这个命令常常用在我们对hive表格观察之时,我们想要知道这个hive各个列名(基于这些具体列 ...

  4. ruby 第三方模块unirest使用

    Creating Requests require 'unirest' response = Unirest.post 'http://httpbin.org/post', headers:{ Acc ...

  5. (数据科学学习手札36)tensorflow实现MLP

    一.简介 我们在前面的数据科学学习手札34中也介绍过,作为最典型的神经网络,多层感知机(MLP)结构简单且规则,并且在隐层设计的足够完善时,可以拟合任意连续函数,而除了利用前面介绍的sklearn.n ...

  6. bzoj 一些题目汇总

    2140: 稳定婚姻 /* 求联通分量. */ #include<bits/stdc++.h> using namespace std; typedef long long LL; inl ...

  7. Java Algorithm Problems

    Java Algorithm Problems 程序员的一天 从开始这个Github已经有将近两年时间, 很高兴这个repo可以帮到有需要的人. 我一直认为, 知识本身是无价的, 因此每逢闲暇, 我就 ...

  8. windows系统下npm升级的正确姿势以及原理

    本文来自网易云社区 作者:陈观喜 网上关于npm升级很多方法多种多样,但是在windows系统下不是每种方法都会正确升级.其中在windows系统下主要的升级方法有以下三种: 首先最暴力的方法删掉no ...

  9. Git初步

    在多人参与开发的项目中,版本控制工具是必须的,网上有很多不错的教程,能简单使用就ok了,粘几篇教程,方便学习 首先我们要了解一些基本的概念,此处简单描述一下 (1)集中式版本控制系统: CVS.SVN ...

  10. UIButton内部子控件自定义布局-“UIEdgeInsets”

    UIButton UIButton做frame动画时,不响应点击 在一个View内部加入几个按钮,然后改变这个view的frame来做动画,但是按钮不响应点击事件. 问题代码 __block CGRe ...