前台实现文字跑马灯的三种方式

  • 时间:2018-11-06 23:15 作者:前端全栈开发学习 来源:前端全栈开发学习 阅读:790
  • 扫一扫,手机访问
摘要:最近写了一个文字跑马灯的项目需求,刚开始用js写,能够完成需求。后面想着换种方式(分别是html和css)来实现同一个需求,以减少性能消耗。首先,需求分析:需求点1.判断文字的长度和容器的长度,假如文字长度大于容器长度则开始滚动,否则不滚动;需求点2.判断滚动滚动的结束,在结束的时间点触发事件(比方

最近写了一个文字跑马灯的项目需求,刚开始用js写,能够完成需求。后面想着换种方式(分别是html和css)来实现同一个需求,以减少性能消耗。

首先,需求分析:

需求点1.判断文字的长度和容器的长度,假如文字长度大于容器长度则开始滚动,否则不滚动;

需求点2.判断滚动滚动的结束,在结束的时间点触发事件(比方: 增减样式等操作);

一、JS实现

思路:

1.判断文字的长度和容器的长度,假如文字长度大于容器长度,则开始滚动,否则不滚动。(offsetWidth)

2.获取滚动条到元素左边的距离,递归滚动,直到滚动后的距离等于文字的长度退出递归。(scrollLeft)

假如不熟习offsetWidth,scrollLeft,您可以点击这里offsetWidth、 scrollLeft

效果图

前台实现文字跑马灯的三种方式

注释: 文字抖动现象是由于录制时间过长,ps制作gif文件只能是500帧以下,通过降低帧率才出现了文字抖动。 代码部分

预览Demo:JS实现文字跑马灯

小结

js的方式能够完美的满足子需求点1和自需求点2。

判断文字和容器的长度可以通过offsetWidth来判断。假如文字长度大于容器长度,则开始滚动。

window.onload=function checkScrollLeft(){
// 判断文字长度能否大于盒子长度
if(boxWidth >= textWidth){ return false}
content.innerHTML += content.innerHTML
document.querySelector('.text').classList.add('padding')
// 升级
textWidth = document.querySelector('.text').offsetWidth
// 开始滚动 触发事件
toScrollLeft()
}
复制代码

判断滚动的结束根据滚动条到元素左边的距离和文字的长度判断,假如滚动条到元素左边的距离等于文字的长度,则结束滚动。

function toScrollLeft(){
// 假如文字长度大于滚动条距离,则递归拖动
if(textWidth > box.scrollLeft){
box.scrollLeft++
setTimeout('toScrollLeft()', 18);
}
else{
// 滚动结束 触发事件
}
}
复制代码

二、HTML实现

效果图:

前台实现文字跑马灯的三种方式

代码部分:

1.文字假如超出了宽度自动向左滚动文字假如超出了宽度自动向左滚动。
复制代码

非常简洁的代码~、~

marquee的API

前台实现文字跑马灯的三种方式

尽管marquee标签的api十分丰富,但是该标签在MDN上是这样形容的:

This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

元素已经过时,请不要再使用。虽然少量浏览器依然支持它,但它不是必需的。此外,使用这个元素基本上是你可以对你的客户做最糟糕的事情之一,所以请不要这样做。

所以,根据咱们IT圈内的紧跟文档标准的准则,对marquee标签,我们在项目中请尽量不要使用

三、CSS实现

效果图

前台实现文字跑马灯的三种方式

代码部分

预览Demo:CSS实现文字跑马灯

小结

CSS能满足子需求点1,能够判断什么时候开始滚动。

window.onload=function checkScrollLeft(){
// 判断文字长度能否大于盒子长度
if(textWidth > wrapWidth) {
// 开始滚动 触发事件
text.style.paddingRight = '300px'
cont.style.left = "-870px"
}
}
复制代码

同时,也能满足子需求点2,判断滚动的结束。

// 滚动结束
document.addEventListener("transitionend", function (){
console.log("end")
}, false)
复制代码

结语

回顾需求

需求点1.判断文字的长度和容器的长度,假如文字长度大于容器长度则开始滚动,否则不滚动;

需求点2.判断滚动滚动的结束,在结束的时间点触发事件(比方: 增减样式等操作);

实现方式的优劣比照

js实现跑马灯效果html实现跑马灯效果css实现跑马灯效果需求点1:heavy_check_mark:?:heavy_check_mark:需求点2:heavy_check_mark:?:heavy_check_mark:兼容性:heavy_check_mark:??

假如需要满足需求,js和css都能够实现。但是考虑到兼容性,css在ios9以下,安卓4.4以下不支持,其余好的处理方案在考虑中。假如你有好的处理方案,欢迎在下方留言与我交流~

另外,css用作单纯的展现效果用还是能优先考虑的,比方下方的css无缝滚动

效果图

前台实现文字跑马灯的三种方式

代码部分

预览Democss无缝滚动动画

所以,工具本身没有优劣之分,什么时候用什么工具。我们要有清晰的思路。

需要前台资料或者者想学前台的小伙伴可以私信“前台”“前台资料”免费获取

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
【系统环境|】ZORRO佐罗软件安装教程及一键新机使用方法详细简介(2023-02-10 21:56)
【系统环境|】阿里云 centos 云盘扩容命令(2023-01-10 16:35)
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
手机二维码手机访问领取大礼包
返回顶部