// js 添加元素的地方使用到了jquery// 获取信息functiongetData(){returnnewPromise(function(resolve, reject){fetch("http://jsonplaceholder.typicode.com/posts").then((response)=>{const data = response.json();resolve(data)}).catch((error)=>{reject(error)})})}let list =[];let num =0;// 渲染(定义多少行弹幕)functionrend(num){
list = Array.from({length: num },()=>[]);const element = document.querySelector('.main');for(let i =0; i <parseInt(num); i++){let ele = document.createElement('div');
ele.setAttribute('class',`barrage barrage${i +1}`)
element.appendChild(ele);}}var timer;functionmySetInterval(fn, millisec){functioninterval(){
timer =setTimeout(interval, millisec);fn();}
timer =setTimeout(interval, millisec)}functionaddBarrage(){let elements = document.querySelectorAll('.barrage');for(let i =0; i < elements.length; i++){let parent = elements[i];let element = elements[i].lastElementChild;if(element ==null){let html =`<div>${list[num].title}</div>`;$(parent).append(html);let width = document.querySelector('.main').offsetWidth;let width1 = parent.lastElementChild.offsetWidth;
parent.lastElementChild.addEventListener('animationend',function(e){
e.target.remove();})
parent.lastElementChild.style.animation =`barrageMove ${(width1 + width)*4000/ width}ms linear forwards`;
num < list.length -1? num++: num =0;}else{let info = element.getBoundingClientRect();if(parent.clientWidth > info.right){let html =`<div>${list[num].title}</div>`;$(parent).append($(html));let width = document.querySelector('.main').offsetWidth;let width1 = parent.lastElementChild.offsetWidth;
parent.lastElementChild.addEventListener('animationend',function(e){
e.target.remove();})
parent.lastElementChild.style.animation =`barrageMove ${(width1 + width)*4000/ width}ms linear forwards`;
num < list.length -1? num++: num =0;}}}}asyncfunctioninit(){rend(4)
list =awaitgetData();mySetInterval(()=>{addBarrage()},500);}
window.onload=()=>{init();}