大家好我是菜鸟前端学有引力,这是我的第一篇文章,我希望把我在工作上遇到的一些业务问题和解决方法教给大家,如果有错误和不足,希望大家多多交流指正~

正片:

今天老板来需求了!要求要在网页上方加一个实时更新数据的滚动公告栏,具体需求是什么呢:

  1. 可以像公告栏一样,滚动数据,把滚动数组里面的数据展示

  1. 每间隔一段时间调用一次接口获取最新滚动数据,比对新旧数组,如果有新的数据要添加在尾部让其滚动展示

简单来说就是滚动展示数据,有新的数据添加进旧数组的尾部并滚动。

而滚动的思路是通过外层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>
  1. 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来实现公告栏文字上下滚动效果,可添加新数据(简单)相关推荐

  1. html 公告栏 上下滚动,vue实现公告栏文字上下滚动效果

    代码实现: 在项目结构的components中新建text-scroll.vue文件 {{text.val}} export default { name: 'TextScroll', props: ...

  2. vue移动端 实现公告栏文字上下滚动效果

    1.html 2. js

  3. 原生JS实现公告栏文字向上滚动

    HTML代码: <div id="top_message"><span style="font-size:19px; position:absolute ...

  4. vue内容横向循环滚动_Vue替代marquee标签超出宽度文字横向滚动效果

    一.npm 安装 如果你想安装插件(自己写的) 安装 # install dependencies npm i marquee-components 使用 在main.js引入 import marq ...

  5. html横向滚动字幕代码,jQuery文字横向滚动效果的实现代码

    很多网站都有公告,并且都喜欢用横向滚动的方式来展现.最近自己用jQuery也写了文字横向滚动,实现了自定义滚动速度,鼠标经过时暂停的功能. HTML代码如下: jQuery文字横向滚动jQuery制作 ...

  6. php无缝滚动文字,JQuery文字无缝滚动效果实现方法

    本文主要介绍了JQuery实现文字无缝滚动效果示例代码(Marquee插件),具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 推荐一个JQuery的无缝文字滚动效果,同时也可以滚 ...

  7. php中滚动显示文字,HTML如何实现文字的滚动效果

    在HTML中,可以通过HTML的标签来实现文字的滚动效果,通过设置标签里的不同属性来实现不同的文字的滚动效果. 在HTML中实现文字的滚动效果其实很简单,本篇文章就给大家介绍HTML 标签实现文字的滚 ...

  8. html自动切换文字,JS实现自动切换文字的导航效果代码

    本文实例讲述了JS实现自动切换文字的导航效果代码.分享给大家供大家参考.具体如下: 这里介绍支持自动切换文字的导航菜单效果,实际上看上去并不像菜单,猛一看倒像是一个Select下拉框,两侧带有箭头控制 ...

  9. Space.js – HTML 驱动的页面 3D 滚动效果

    为了让我们的信息能够有效地沟通,我们需要创建用户和我们的媒体之间的强有力的联系.今天我们就来探讨在网络上呈现故事的新方法,并为此创造了一个开源和免费使用的 JavaScript 库称为 space.j ...

最新文章

  1. 正则表达式匹配不包含特定字符串解决匹配溢出问题
  2. Centos7 下部署PPTP
  3. CTR点击率预估干货分享
  4. 在Amazon FreeRTOS V10中使用运行时统计信息
  5. ZZULIOJ 1101: 逆序数字(函数专题)
  6. 2015 Autodesk 开发者日( DevDays)和 助力开发周火热报名中
  7. 【转】opengl的一些小问题
  8. 传智播客 import导入模块 学习笔记
  9. [转] eclipse安装subversive插件
  10. steam密码查看_如何查看和清除Steam中的先前别名
  11. 中国医疗器械行业需求态势及未来前景趋势预测报告(2022-2027年)
  12. 35岁,转行AI年薪100万,牛逼的人生无需解释!
  13. 数学建模,8月学习感想
  14. FPGA入门:QuartusⅡ实现半加器,全加器,四位全加器
  15. Android AES加密解密
  16. 寄存器由来 ES CS SS DS FS GS区别
  17. python读取文件夹下的文件名写入excel(高效办公)
  18. 【学生成绩管理系统】课程设计
  19. 浅笑云计算机,才太吉:浅笑云舒
  20. poj 2382 Apple Catching 入门dp

热门文章

  1. 谷歌浏览器怎么看到http版本
  2. 领英中关村产业研究院:2021年中国智能制造技术人才洞察
  3. MSBuild使用初步
  4. 颠覆传统的中兴微模块数据中心 开启中小企业的大数据梦
  5. 主流蓝牙芯片盘点,Nordic/TI/博通哪家强?
  6. c的关键字(commom)
  7. thinkphp 5.0下载网络图片
  8. 建筑五金件建筑材料英国UKCA认证—EN 179
  9. fer2013数据集 主要是用来建造人脸情绪模型
  10. PKCS1 PKCS8 公私钥 加密解密过程