用js来实现公告栏文字上下滚动效果,可添加新数据(简单)
大家好我是菜鸟前端学有引力,这是我的第一篇文章,我希望把我在工作上遇到的一些业务问题和解决方法教给大家,如果有错误和不足,希望大家多多交流指正~
正片:
今天老板来需求了!要求要在网页上方加一个实时更新数据的滚动公告栏,具体需求是什么呢:
可以像公告栏一样,滚动数据,把滚动数组里面的数据展示
每间隔一段时间调用一次接口获取最新滚动数据,比对新旧数组,如果有新的数据要添加在尾部让其滚动展示
简单来说就是滚动展示数据,有新的数据添加进旧数组的尾部并滚动。
而滚动的思路是通过外层div的srcollTop属性值递增来实现的,废话不多说我们上代码!
1.html
<!-- 大div --><div class="scrollBox"><!-- 外层div用于通过其scrollTop属性实现滚动 --><div class="s-outsideBox" id="box"><!-- 内层div用于比较滚动距离判断滚动暂停或继续 --><div id="list"><!-- 遍历滚动数组 --><divclass="s-list"v-for="(item,index) in scrollList":key="item.id"><!-- 展示滚动数据 --><span class="s-item flex">{{item.title}}</span></div></div></div></div>
2.css
<style>body,html {padding: 0;box-sizing: border-box;height: 100%;width: 100%;background-color: #f7f7f7 !important;}.scrollBox {margin: 0 auto; /* 让div居中 */width: 800px;height: 116px;border-radius: 20px;padding: 10px 0;margin-top: 40px;background-color: rgba(172, 28, 38, 0.2);}.s-outsideBox {overflow: hidden; /*把内部多出部分隐藏 */width: 100%;height: 100%;}.s-list {display: flex;flex-direction: column;flex-wrap: nowrap;padding-bottom: 4px;}.s-item {line-height: 26px;width: 100%;text-align: center;color: white;}</style>
js代码(用的是CDN引入的vue,所以是vue写法)
<script>new Vue({el: "#app",data() {return {scrollList: [{id: 001,title: "鱼香肉丝没有鱼",time:'2023-1-12 12:31:02'},{id: 002,title: "老婆饼里没有饼",time:'2023-1-12 13:31:02'},{id: 003,title: "蚂蚁上树没有蚂蚁",time:'2023-1-12 14:31:02'},{id: 004,title: "麻婆豆腐没有麻婆",time:'2023-1-12 15:31:02'},{id: 005,title: "温馨提示不温馨",time:'2023-1-12 16:31:02'},{id: 006,title: "你没有女朋友....",time:'2023-1-12 17:31:02'},],};},methods: {//滚动函数scrollUp() {let timer = setInterval(() => {//当内层展示的列表高度减去外层盒子高度小于盒子滚动距离时,继续滚动,反之暂时暂停if (box.scrollTop < list.offsetHeight - box.offsetHeight) {box.scrollTop++; } else {//到了就返回等待接口最新数据更新再滚动,这里不要清除定时器,否则有新数据push时就不会滚动了return;}}, 30);},//获取初始滚动展示数据getFirstSrollList() {axios({method: "GET",headers: { "content-type": "application/json" },url: "请求地址",params: {},}).then((res) => {if (res.status == "200") {//调用失败输出错误if (res.data.error) {//这用了elementui的$alertthis.$alert(`${data.error}`, {confirmButtonText: "我知道了",callback: (action) => {},});return;} else {//获取数据let that = this,data = res.data;// 由于获取的数据是按时间顺序排列,所以需要将数组倒序处理that.scrollList = data.reverse();this.scrollUp(); //随即调用滚动函数}}});},getnews() {// 每隔50s调用一次接口,比较新旧数据,有新增则添加至旧数组中let timer = setTimeout(() => {axios({method: "GET",headers: { "content-type": "application/json" },url: "请求头",params: {},}).then((res) => {if (res.status == "200") {if (res.data.error) {//这用了elementui的$alertthis.$alert(`${data.error}`, {confirmButtonText: "我知道了",callback: (action) => {},});return;} else {let that = this,data = res.data.reverse();// 比对新旧数据过滤出旧数据里没有的新数据并存为addListlet addList = data.filter((item) =>!this.scrollList.some((ele) => ele.id === item.id));//如果不为空则push进旧数据列表if (addList.length >= 1) {for (var i in addList) {this.scrollList.push(addList[i]);}}}}});this.getnews();}, 50000);},},mounted() {//先通过id获取元素本身var box = document.getElementById("box");var list = document.getElementById("list");//调用初始数据接口并启动滚动函数this.getFirstSrollList(); //获取初始滚动数据列表//调用获取新数据接口this.getnews();},});</script>
好了这就是我的解决思路和代码!希望能够帮助到你,里面没有考虑兼容和性能,我也是刚入门两三个月的菜鸟,希望通过努力慢慢进步,一起加油吧~~~
用js来实现公告栏文字上下滚动效果,可添加新数据(简单)相关推荐
- html 公告栏 上下滚动,vue实现公告栏文字上下滚动效果
代码实现: 在项目结构的components中新建text-scroll.vue文件 {{text.val}} export default { name: 'TextScroll', props: ...
- vue移动端 实现公告栏文字上下滚动效果
1.html 2. js
- 原生JS实现公告栏文字向上滚动
HTML代码: <div id="top_message"><span style="font-size:19px; position:absolute ...
- vue内容横向循环滚动_Vue替代marquee标签超出宽度文字横向滚动效果
一.npm 安装 如果你想安装插件(自己写的) 安装 # install dependencies npm i marquee-components 使用 在main.js引入 import marq ...
- html横向滚动字幕代码,jQuery文字横向滚动效果的实现代码
很多网站都有公告,并且都喜欢用横向滚动的方式来展现.最近自己用jQuery也写了文字横向滚动,实现了自定义滚动速度,鼠标经过时暂停的功能. HTML代码如下: jQuery文字横向滚动jQuery制作 ...
- php无缝滚动文字,JQuery文字无缝滚动效果实现方法
本文主要介绍了JQuery实现文字无缝滚动效果示例代码(Marquee插件),具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 推荐一个JQuery的无缝文字滚动效果,同时也可以滚 ...
- php中滚动显示文字,HTML如何实现文字的滚动效果
在HTML中,可以通过HTML的标签来实现文字的滚动效果,通过设置标签里的不同属性来实现不同的文字的滚动效果. 在HTML中实现文字的滚动效果其实很简单,本篇文章就给大家介绍HTML 标签实现文字的滚 ...
- html自动切换文字,JS实现自动切换文字的导航效果代码
本文实例讲述了JS实现自动切换文字的导航效果代码.分享给大家供大家参考.具体如下: 这里介绍支持自动切换文字的导航菜单效果,实际上看上去并不像菜单,猛一看倒像是一个Select下拉框,两侧带有箭头控制 ...
- Space.js – HTML 驱动的页面 3D 滚动效果
为了让我们的信息能够有效地沟通,我们需要创建用户和我们的媒体之间的强有力的联系.今天我们就来探讨在网络上呈现故事的新方法,并为此创造了一个开源和免费使用的 JavaScript 库称为 space.j ...
最新文章
- 正则表达式匹配不包含特定字符串解决匹配溢出问题
- Centos7 下部署PPTP
- CTR点击率预估干货分享
- 在Amazon FreeRTOS V10中使用运行时统计信息
- ZZULIOJ 1101: 逆序数字(函数专题)
- 2015 Autodesk 开发者日( DevDays)和 助力开发周火热报名中
- 【转】opengl的一些小问题
- 传智播客 import导入模块 学习笔记
- [转] eclipse安装subversive插件
- steam密码查看_如何查看和清除Steam中的先前别名
- 中国医疗器械行业需求态势及未来前景趋势预测报告(2022-2027年)
- 35岁,转行AI年薪100万,牛逼的人生无需解释!
- 数学建模,8月学习感想
- FPGA入门:QuartusⅡ实现半加器,全加器,四位全加器
- Android AES加密解密
- 寄存器由来 ES CS SS DS FS GS区别
- python读取文件夹下的文件名写入excel(高效办公)
- 【学生成绩管理系统】课程设计
- 浅笑云计算机,才太吉:浅笑云舒
- poj 2382 Apple Catching 入门dp