【H5】文字横向滚动

 相关知识:H5基础,css基础,js基础

转载注明本文出处即可

本文共分为三部分:分别为gif演示,原理解析,实现步骤 

源代码请点击文末链接下载

个人才疏浅陋,若有错误请谅解。

目录

一、gif演示

二、原理解析

三、实现步骤

 四、附录


一、gif演示

        gif演示如下:

二、原理解析

        像上面的从做到右的滚动效果,相当于文字本身乘坐了有轨电车,当电车向左或者向右移动的时候,文字跟随移动,那么文字本身相对于电车是静止不动的,这样我们就得把文字和电车做成绝对布局,文字(position:absolute)在电车上静止(position:relative),分析好文字本身是如何移动的之后,我们接下来关注电车是如何移动的。

        按照我们日常的生活经验,电车想要从b站点到a站点,电车的头部到a站点的距离就是电车走到站点a的距离,但是我们文字滚动的时候是要整个电车走出站点a,直到我们看不见,那么必然是车尾到站点a的距离c+w,一边情况下,我们会要求电车匀速的在轨道上面跑,所以要设置一个速度speed,同样在实际生活中,电车是从b站点一个接着一个不停的循环跑的,所以我们采用函数的递归使其不停地运动起来。如果当公路工作人员突然想要在有轨电车排查人员(鼠标移到上面),电车是要停车的,此时我们要刹车停下(清除这个重复移动的过程),当工作人员离开时,电车也要重新运作起来(开启按刚才的运动)。

总结起来就是一句话,文字滚动就是不停的缩小(向左走) 或放大(向右走)距离c+w。鼠标选定时候要清除动画,鼠标移开要回复滚动。

三、实现步骤

首先在你的文本编辑器或者集成开发环境中创建一个基本的H5界面,

 然后在head标签中添加jQuery的引入,你可以先去下载一个jQuery,任意版本应该都可以。

 然后我们搭建基本显示的文本位置,如下:

接着我们根据上面分析的原理,此时aaa应当是note的载体,note应当相对于aaa固定,我们使用css来固定,并给它们添加一点样式,所以按照以下写法

 其中:position:relative/absolute;用于定位,white-space:nowrap是去除连续空格,当然换行也会被去除,overflow:hidden是隐藏滚动条

写好上面的代码以后,会有一下静态效果,

 接下来我们开始让他动起来了

首先创建一个函数,noteScroll()便是文字滚动函数,并且把动画函数放在电车身上(aaa)然后让界面加载好就运行

 好的,我们开始设置一些初始化的变量

 使用函数runtime控制每次代用的时长和运动过的举例(走过的距离)

 接着写动画的执行函数ani,并且递归ani函数让他一直运动起来。(不理解jQuery的animate动画函数可以百度一下,我会在附录加入对这个的讲解一下文章连接)

接着就是鼠标的悬停与移开时候动画的关闭与开启

 最后还是要开启动画

 四、附录

        1、jQuery中动画函数animate的用法详解【转】 - 小猿笔记 - 博客园 (cnblogs.com)

        2、百度链接   提取码:ppp1

        3、源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jquery-1.11.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body> 
    <div id="aaa" style="width:100%; position:relative; white-space:nowrap; overflow:hidden; height:20px;"> 
        <div id="note" style="position:absolute; top:0; height:20px;">
            <span>文字横向滚动</span>
        </div> 
    </div>
    <script type="text/javascript">
        $.fn.noteScroll=function(){
            var p = $(this), c = p.children(), speed=2500; 
            var cw = c.width(),pw=p.width(); 
			var t = (cw / 100) * speed; 
			var f = null, t1 = 0; 

            function runtime() {
			    f = setInterval(function(){t1 += 10;},10); 
			}

            function ani(tm) { 
			    runtime(); 
			     c.animate({left:-cw},tm,"linear",
                    function(){
                        c.css({left:pw});clearInterval(f);t1=0;t=((cw+pw)/100)*speed;
                        ani(t);
			        }); 
			} 

            p.on({
                mouseenter: function () { 
			                c.stop(false, false); 
			                clearInterval(f);
			                },  
                mouseleave: function () {
			                ani(t - t1); 
			                }  
                }); 

            ani(t); 
        };
        
		$(function(){
            $("#aaa").noteScroll();
		});
        
    </script>
</body>
</html>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值