请问如何用原生js实现文字向左横向滚动

qingwadaxia_1 2017-10-29 10:30:14
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>

<style type="text/css">
#gundong{width:320px;margin:0 auto;background:#dd127b;height:28px;line-height:28px;overflow:hidden;font-size:14px;color:#fff;font-weight:bold;}
</style>
<div id="gundong">asdddfsddsfdfsddd2523ddsfdddddr2ddetetdddgdfs8o980dd12dsaczvbety</div>

<script>
var gundong = document.getElementById("gundong");


</script>

</body>
</html>
请问如何用原生js实现文字向左横向滚动
...全文
1339 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你自己减少内容想一下就知道了, 一次显示2个字符,有5个(12345)要滚动,你滚动到显示45的时候忽然重置为0,内容就会忽然变为12了,会跳 你增加一倍,滚动到完一次内容(此时显示的还是12),设置scrollLeft为0,显示的还是12,内容一样就不会跳了
qingwadaxia_1 2017-10-30
  • 打赏
  • 举报
回复
我想问下 为什么要重复一遍文字呢 为什么重复了就可以不间断呢
qingwadaxia_1 2017-10-30
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
[quote=引用 4 楼 qingwadaxia_1 的回复:] [quote=引用 3 楼 showbo 的回复:] 往左不就是 if (step > 0 && gundong.scrollLeft >= scrollWidth) step = -step; else if (step <0 && gundong.scrollLeft <=0) step = -step; 这里改成 if (step > 0 && gundong.scrollLeft >= scrollWidth) clearInterval(timer)就行行了,要重复往左就改为 if (step > 0 && gundong.scrollLeft >= scrollWidth) gundong.scrollLeft=0
大神 我知道这样可以,但是会有个断开的情况, 不能那种无间断的一直往左[/quote]内容doubule一次 参考:javascript文字无缝滚动示例 [/quote]大神 网站是你的吗 我保存了
  • 打赏
  • 举报
回复
引用 4 楼 qingwadaxia_1 的回复:
[quote=引用 3 楼 showbo 的回复:] 往左不就是 if (step > 0 && gundong.scrollLeft >= scrollWidth) step = -step; else if (step <0 && gundong.scrollLeft <=0) step = -step; 这里改成 if (step > 0 && gundong.scrollLeft >= scrollWidth) clearInterval(timer)就行行了,要重复往左就改为 if (step > 0 && gundong.scrollLeft >= scrollWidth) gundong.scrollLeft=0
大神 我知道这样可以,但是会有个断开的情况, 不能那种无间断的一直往左[/quote]内容doubule一次 参考:javascript文字无缝滚动示例
qingwadaxia_1 2017-10-30
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
往左不就是 if (step > 0 && gundong.scrollLeft >= scrollWidth) step = -step; else if (step <0 && gundong.scrollLeft <=0) step = -step; 这里改成 if (step > 0 && gundong.scrollLeft >= scrollWidth) clearInterval(timer)就行行了,要重复往左就改为 if (step > 0 && gundong.scrollLeft >= scrollWidth) gundong.scrollLeft=0
大神 我知道这样可以,但是会有个断开的情况, 不能那种无间断的一直往左
qingwadaxia_1 2017-10-30
  • 打赏
  • 举报
回复
引用 11 楼 showbo 的回复:
空格换行了,不在一行,要加上white-space:nowrap禁止换行
大神 多谢了! 我还有最后一个问题 不好意思 我问有点多 为什么空格换行了他就不会滚动了 滚的不是div里的内容吗 这跟它换不换行有什么关系吗 而且我只是加了个空格, 为什么他会换行。
  • 打赏
  • 举报
回复
空格换行了,不在一行,要加上white-space:nowrap禁止换行
qingwadaxia_1 2017-10-30
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
你自己减少内容想一下就知道了, 一次显示2个字符,有5个(12345)要滚动,你滚动到显示45的时候忽然重置为0,内容就会忽然变为12了,会跳 你增加一倍,滚动到完一次内容(此时显示的还是12),设置scrollLeft为0,显示的还是12,内容一样就不会跳了
不过还有个问题就是为什么不能用空格之类的符号隔开,用了就会只滚动一次
qingwadaxia_1 2017-10-30
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
你自己减少内容想一下就知道了, 一次显示2个字符,有5个(12345)要滚动,你滚动到显示45的时候忽然重置为0,内容就会忽然变为12了,会跳 你增加一倍,滚动到完一次内容(此时显示的还是12),设置scrollLeft为0,显示的还是12,内容一样就不会跳了
多谢
  • 打赏
  • 举报
回复

    <style type="text/css">
        #gundong {
            width: 320px;
            margin: 0 auto;
            background: #dd127b;
            height: 28px;
            line-height: 28px;
            overflow: hidden;
            font-size: 14px;
            color: #fff;
            font-weight: bold;
        }
    </style>
    <div id="gundong">asdddfsddsfdfsddd2523ddsfdddddr2ddetetdddgdfs8o980dd12dsaczvbety</div>

    <script>
        var gundong = document.getElementById("gundong");
        var step =1,scrollWidth=gundong.scrollWidth-gundong.offsetWidth;
        var timer=setInterval(function () {
            gundong.scrollLeft += step;
            if (step > 0 && gundong.scrollLeft >= scrollWidth) step = -step;
            else if (step <0 && gundong.scrollLeft <=0) step = -step;
        }, 50)
    </script>


Web开发学习资料推荐
javascript生成二维码
XDomainRequest,IE8+跨域请求对象
  • 打赏
  • 举报
回复
往左不就是 if (step > 0 && gundong.scrollLeft >= scrollWidth) step = -step; else if (step <0 && gundong.scrollLeft <=0) step = -step; 这里改成 if (step > 0 && gundong.scrollLeft >= scrollWidth) clearInterval(timer)就行行了,要重复往左就改为 if (step > 0 && gundong.scrollLeft >= scrollWidth) gundong.scrollLeft=0
qingwadaxia_1 2017-10-29
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:

    <style type="text/css">
        #gundong {
            width: 320px;
            margin: 0 auto;
            background: #dd127b;
            height: 28px;
            line-height: 28px;
            overflow: hidden;
            font-size: 14px;
            color: #fff;
            font-weight: bold;
        }
    </style>
    <div id="gundong">asdddfsddsfdfsddd2523ddsfdddddr2ddetetdddgdfs8o980dd12dsaczvbety</div>

    <script>
        var gundong = document.getElementById("gundong");
        var step =1,scrollWidth=gundong.scrollWidth-gundong.offsetWidth;
        var timer=setInterval(function () {
            gundong.scrollLeft += step;
            if (step > 0 && gundong.scrollLeft >= scrollWidth) step = -step;
            else if (step <0 && gundong.scrollLeft <=0) step = -step;
        }, 50)
    </script>
Web开发学习资料推荐 javascript生成二维码 XDomainRequest,IE8+跨域请求对象
大神 你这个是循环的啊 如何一直往左滚动呢
js不间断滚动代码 来源: http://www.cssrain.cn/demo/Class-Of-Marquee-Scroll/MSClass.html 使用方法: 应用说明:页面包含<script type="text/javascript" src="MSClass.js">滚动方向 (可选,默认为0向上滚动) 可设置的值包括:0,1,2,3,"top","bottom","left","right" (0向上 1向下 2向 3向右) Step (1) 滚动的步长 (可选,默认值为2,数值越大,滚动越快) Width (760) 容器可视宽度 (可选,默认值为容器初始设置的宽度) Height (52) 容器可视高度 (可选,默认值为容器初始设置的高度) Timer (50) 定时器 (可选,默认值为30,数值越小,滚动的速度越快,1000=1秒,建议不小于20) DelayTime (5000) 间歇停顿延迟时间(可选,默认为0不停顿,1000=1秒) WaitTime (3000) 开始时的等待时间(可选,默认或0为不等待,1000=1秒) ScrollStep (52) 间歇滚动间距 (可选,默认为翻屏宽/高度,该数值与延迟均为0则为鼠标悬停控制,-1禁止鼠标控制)  使用建议: 1、建议直接赋予容器的显示区域的宽度和高度,如(
......
) 2、建议为容器添加样式overflow = auto,如(
......
) 3、为了更准确的获取滚动区域的宽度和高度,请尽可能将各滚动单位直接赋予正确宽高度 4、对于TABLE标记的横向滚动,需要对TABLE添加样式display = inline,如(
......
) 5、对于翻屏滚动或间歇滚动,要注意各滚动单位间的间距,同时需要对容器的可视高度和可视宽度做好准确的设置,对于各滚动单位间的间距可以通过设置行间距或者单元格的高宽度来进行调整 6、对于LI自动换行的问题暂时没有更好的解决办法,建议将其转换成表格(TABLE)的形式来达到同等的效果 7、针对横向滚动文字段落,如果最末端是以空格" "结束的,请将空格" "转换成" " 8、鼠标悬停滚动思想源自Flash,所以有一定的局限性(容器内仅允许用图片或者带链接的图片
的形式,并需要禁止其自动换行)

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧