前言:

        本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽。

        本篇文章为您分析一下原生JS写文字滚动效果

需求分析:

  • 需要用到animate.js动画插件 【上一篇博客中】 https://www.cnblogs.com/qq4297751/p/12651460.html

  • 如果您没有看过我上一篇的运动插件的博客,那么请您先看完运动插件再来查阅下面这篇文章,本片文章只是对运动插件的一个小应用

HTML结构


    <div class="container">
        <div class="left title">最新公告</div>
        <div class="left item">
            <ul>
                <li>1.Lorem ipsum dolor sit.</li>
                <li>2.Deserunt nobis eum consectetur.</li>
                <li>3.Deleniti ut esse praesentium?</li>
                <li>4.Unde ullam dolore dicta!</li>
                <li>5.Hic dicta atque esse.</li>
            </ul>
        </div>
    </div>

CSS样式

        .container {
            background-color: #b3effe;
            height: 50px;
            padding: 10px 20px;
            box-sizing: border-box;
        }

        .left {
            float: left;
            height: 30px;
            line-height: 30px;
        }

        .title::after {
            content: "|";
            margin-left: 15px;
            font-size: 25px;
            color: #d8d8d8;
            /* vertical-align: -5px; */
        }

        .left ul {
            margin: 0;
            padding: 0;
            list-style: none;
            margin-left: 20px;
            height: 30px;
            overflow: auto;
        }

        .left ul li {
            height: 30px;
        }

看看效果

文字的滚动原理就是隐藏旁边的滚动条
想让他无缝滚动,就需要在最后一条数据中添加第一条数据

// 选中ul
var ul = document.querySelector(".left ul");
// 第一步: 要让他无缝滚动,需要复制第一个li
function cloneFirstLi() {
    // 深度克隆第一个li元素
    var firstLi = ul.children[0].cloneNode(true);
    // 添加到ul之后
    ul.appendChild(firstLi);
}

cloneFirstLi(); // 调用函数

设置一个定时器,开始滚动


/**
 * 第二步: 开始滚动
 */
function startSroll() {
    // 设置定时器
    setInterval(scroll, 2000)
}



/**
 * 第三步: 滚动一次的距离
 */
function scroll() {
    // 调用运动插件
    var animate = new myPlugin.Animate({
        total: 300,               // 总时间
        begin: {
            top: curTop           // 开始滚动条的高度
        },
        end: {
            top: curTop + height  // 结束滚动条的高度 = 当前滚动条的高度加上滚动距离
        },
        onmove: function () {
            curTop = this.curData.top;  // 目标状态的滚动条高度
            ul.scrollTop = curTop;      // 重新设置滚动条的高度
        },
        onover: function () {
            // 如果当前滚动条的高度 - 滚动距离 === 目标状态的滚动条高度
            if (ul.scrollHeight - height === curTop) {
                curTop = 0;             //滚动条回到0
                ul.scrollTop = curTop;  // 重新设置滚动条的高度
            }
        }
    });
    animate.start();  // 调用开始函数
}

startSroll();

效果如下

最后把CSS样式中的overflow: auto换成hidden就行了

结语

整完!!!

js 实现文字滚动功能,可更改配置参数 带完整版解析代码。的更多相关文章

  1. js 实现淘宝放大镜功能,可更改配置参数 带完整版解析代码[magnifier.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝放大镜效果 基本功能: 运 ...

  2. js 实现淘宝无缝轮播图效果,可更改配置参数 带完整版解析代码[slider.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 需求分析: ...

  3. js 实现图片瀑布流效果,可更改配置参数 带完整版解析代码[waterFall.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS实现图片瀑布流效果 页面需求 1 ...

  4. js 实现对象的混合与克隆效果,带完整版解析代码[helpers.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 对象混合 ...

  5. js 实现动画功能,完整解析插件版 可更改配置参数[animate.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写一个运动插件 基本功能: 补充 ...

  6. JS无缝文字滚动(兼容各大浏览器)

    <style>*{margin:0px;padding:0px;border:0px;}body{font-size:12px}#demo1{height:auto;text-align: ...

  7. MFC/VC CxImage 简单配置与使用 (完整版)

    如果本篇文章还不能解决你在生成解决方案以及便宜过程中的问题 请参阅: http://blog.csdn.net/afterwards_/article/details/7997385 我个人配置过来成 ...

  8. PHP LAMP环境搭建及网站配置流程(完整版)

    心血来潮想做一个自己的博客网站,写一些文章做技术分享,平时遇到的一些问题的解决办法都记录下来,网站搭建成功,那么第一篇博客自然就是整个网站的搭建以及域名的注册.备案.解析流程,总共分为以下几步: 1. ...

  9. IntelliJ IDEA配置Tomcat(完整版教程)

    查找该问题的童鞋我相信IntelliJ IDEA,Tomcat的下载,JDK等其他的配置都应该完成了,那我直接进入正题了. 1.新建一个项目 2.由于这里我们仅仅为了展示如何成功部署Tomcat,以及 ...

随机推荐

  1. pycharm文件名颜色代表的含义

    在使用pycharm过程中,文件名有不一样的颜色. 绿色:已经加入版本控制暂未提交 红色:未加入版本控制 蓝色:加入版本控制,已提交,有改动 白色:加入版本控制,已提交,无改动 灰色:版本控制已忽略文 ...

  2. rem样板

    window.onload=window.onresize=function(){ var rem=document.documentElement.clientWidth*20/320; docum ...

  3. 曹工说Redis源码(3)-- redis server 启动过程完整解析(中)

    文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...

  4. 【BIM】BIMFACE中创建疏散效果

    背景 在BIM运维中,消防疏散是不可或缺的一环,当发生火警的时候,触发烟感器发生报警,同时启动消防疏散,指导现场工作人员进行疏散,及时准确地显示出疏散路线对争取疏散时间尤为重要.我将介绍如何在bimf ...

  5. php--phpstorm使用正则匹配批量替换

    1.首先勾选正则规则 如图勾选右侧的Match Case和Regex 2.编写正则规则:无须添加//左右分解符,直接写正则表达式,注意应该转义的部分,需要原封不动替换的部分加上括号 3.编写替换规则: ...

  6. Django 已生成数据时怎么查询数据库

    数据库已写好时,怎样查询数据库 1.输入命令:python manage.py inspectdb  > model1.py     注:>重定向 到model1.py

  7. lr自带协议工具

    Lr自带的协议分析的工具: 录制脚本之前,选对协议很关键,否则错误的协议会导致Virtual User Generator 录制不到脚本,或录制的脚本不完整,有些应用可能需要选择多个协议才能完整的记录 ...

  8. 使用 RestTemplate 进行第三方Rest服务调用

    1. 前言 RestTemplate 是 Spring 提供的一个调用 Restful 服务的抽象层,它简化的同 Restful 服务的通信方式,隐藏了不必要的一些细节,让我们更加优雅地在应用中调用 ...

  9. 解决idea导入maven项目缺少jar包的问题

    之前一直用的elipse,现在用idea不熟悉,这里记录一下.这里以idea2017为例. 导入elipse的maven项目,提示缺少jar包,肯定是idea没有给你导包. 第一步,首先确认自己的id ...

  10. Codeup 25609 Problem I 习题5-10 分数序列求和

    题目描述 有如下分数序列 2/1,3/2,5/3,8/5,13/8,21/13 - 求出次数列的前20项之和. 请将结果的数据类型定义为double类型. 输入 无 输出 小数点后保留6位小数,末尾输 ...