超喜欢茜茜 2022-10-08 16:09 采纳率: 42.9%
浏览 18
已结题

angular项目中通知公告无缝滚动

问题遇到的现象和发生背景

angular项目中有这样一个需求:实现通知公告向上循环滚动,通知公告不是固定内容,随后台添加而增加,滚动时需平滑滚动,且循环滚动,点击相应的通知公告需进入对应的详情页,效果如图

img

用代码块功能插入代码,请勿粘贴截图
显示内容的代码:
<div id="cr2ContentBox">
                    <div id="cr2Content">
                      
                      <div class="cr2Cont" *ngFor="let item of industryItems">
                        <div class="cr2Tit" nzSpan='20' (click)="detail(item)">{{item.title}}</div>
                        <div class="cr2Time"><span class="date2">{{item.time}}</span></div>
                      </div>
                      
                      <div class="cr2Cont" *ngFor="let c of items5">
                        <div class="cr2Tit" nzSpan='20' (click)="policydetail(c)">{{c.title}}</div>
                        <div class="cr2Time"><span class="date2">{{c.time}}</span></div>
                      </div>
                    </div>
                  </div>

目前使用但有缺陷的ts

detail(e) {
    console.log("我看下这个能不能获取到id", e);
    localStorage.setItem("detailid", e.id);
    localStorage.setItem("detailtit", e.title);
    localStorage.setItem("detailtime", e.time);
    localStorage.setItem("detailcontent", e.content);
    localStorage.setItem("detailImg", e.fileid);
    this.router.navigate(["/detail"]);
  }
 // 行业动态
    var drawLetters = document.getElementById("cr2ContentBox");
    var dl = document.getElementById("cr2Content");
    var speed2 = 70; //滚动速度值,值越大速度越慢
    function Marquee2() {
      drawLetters.scrollTop++;
      var newNode2 = document.createElement("div");
      newNode2.innerHTML = dl.innerHTML;
      console.log(newNode2.innerHTML);
      newNode2.onclick = function () {//这个onclick是为了点击内容跳转到详情页,然而并不能跳转到相应详情页,只起到跳转打开新窗口的作用,因为document.createElement("div")创建的内容并没能获取到它的id,导致它拿不到后端传过来的内容
        console.log("点击循环的元素");
        window.open("#/detail")
      }
      drawLetters.insertBefore(newNode2, null);
    }
    var MyMar2 = setInterval(Marquee2, speed2); //设置定时器
    drawLetters.onmouseover = function () {
      clearInterval(MyMar2);
    }
    drawLetters.onmouseout = function () {
      MyMar2 = setInterval(Marquee2, speed2);
    }

运行结果及报错内容

运行效果有缺陷,第一批滚动的内容一切正常,循环后的新内容不能点击跳转到相应详情页,

我的解答思路和尝试过的方法

我尝试过:1、css动画,能实现,但是每滚动完一轮会有咯噔的跳动,影响美观,百度之后也没能解决这个缺陷
2、swiper轮播图改造,在vue中能实现,angular中有问题

我想要达到的结果

实现通知公告向上无缝,平滑,循环滚动

  • 写回答

1条回答 默认 最新

  • KA冉KA 2022-10-09 16:01
    关注

    我使用的也是css属性的动画效果,没有出现咯噔的跳动:
    思路:设置一条数据的固定高度,通过后端查到的条数*固定高度,进行动画的设置。(可根据效果对数值进行微调)
    代码示例:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 10月8日

悬赏问题

  • ¥15 综合布线实例设计,就好看好看不恐怖可好滤镜好聚
  • ¥15 使用moviepy库视频合并时出错
  • ¥30 FLUENT液固传质UDF
  • ¥15 怎么看梯度直方图以,怎么判断梯度消失/爆炸,怎么解决
  • ¥15 aspnetdll文件访问拒绝
  • ¥15 wpf中在模版中寻找元素
  • ¥15 MFC平台生成指定圆
  • ¥15 jmeter出现403
  • ¥500 求华为P30PRO手机硬盘数据恢复
  • ¥15 关于#vscode#的问题:ESP32开发板对接MQTT实现小灯泡的开关