前言:网上找了半天 都说无缝 用来了后面一篇空白 有一点原因就是因为用在我们项目本身的时候 我们自己的高度更别人的不一样 所以我们要自己计算 然后就自己写了一个 这个上下左右都可以 如果要向右 就修改js中的 margin-top=margin-left height=width heigt这个我是获取元素的高度 不是写死的 如果你的单位是rem 这里就要把高度写死
我做的时候还有做了定时刷新 分页 不过删掉了 这里就做了滚动 如果有需求可以问我
没录制动的效果可以复制自己预览
我们现在来看看代码截图
1.html代码 这里最开始写的时候 就随便写了几个标签都有问题 后面看了别人的大概都用了三个盒子 才能运行 就是为了后面不留空
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>走马灯</title> <style> #boxID{width:500px;height:300px;margin:0 auto;overflow:hidden;background:black;box-sizing:border-box;padding:0 10px;} .list-box .list{width:100%;display:flex;padding:0 10px;align-items:center;height:75px;box-sizing:border-box;border-bottom:1px solid #ccc;} .list-box .list span{width:100%;font-size:18px;color:#ddd;flex:1;text-align:center;display:flex;align-items:center;justify-content:center;box-sizing:border-box;} .list-box .list:last-child{border-bottom:1px solid red;} </style> </head> <body> <div id="boxID"> <div id="listBoxID"> <div class="list-box" id='listID'> </div> </div> </div> <script src="./jQuery3.6.0.js"></script> <script src="./yqq.js"></script> </body> </html>
复制
2.js代码 我的列表是直接循环渲染上去的 方便做很多操作 自己也可以不用
// 这里是我们的列表数据 let data = [ { title: "你好丫", name: '小明' }, { title: "美好的一天", name: '小红' } ]; var scrollTop = null;// 保存scrollTop实列 // 创建一个走马灯类方法 class ScrollTop { constructor(options, box, id) { this.time; this.options = options; this.id = id; this.obj = $(box); this.height = $(box).find(this.id).height(); this.value = 0; } statr() { // 添加一些数据使头尾相连 this.obj.find(this.id).clone().appendTo(this.obj); this.time = setInterval(() => { this.value++; if (this.value > this.height) this.value = 0; this.obj.find(this.id).first().css("margin-top", -this.value); }, this.options); } anew() { this.height = this.obj.find(this.id).height(); } } !(function () { listitembox(); })(); // 数据渲染页面 function listitembox(params) { var str1 = ""; for (var i = 0; i < data.length; i++) { str1 += ` <div class="list"> <span>${i + 1}</span> <span>${data[i].title}</span> <span>${data[i].name}</span> </div> `; } $("#listID").html(str1); ifHeight(data.length, 2); // 调用类(移动速度,主元素id,子元素id) scrollTop = new ScrollTop(15, "#boxID", "#listBoxID"); scrollTop.statr(); } // 这里做判断是为了不然数据只有几条的时候 滚动到最后面出现空白 // 根据数据长度判断设置高度 这里我们是看主盒子的高度来定义每条数据有多高 // 比如主盒子高度是300 数据只有2两条 我们就用300/2得到每条数据的高度 function ifHeight(dataLength) { let heigt = $("#boxID").height() // 获取主盒子的高度 let h = heigt / dataLength if (dataLength <= 4) {// 这里判断我是每次出现小于4条的时候 高度才会平均分 $("#listID .list").attr("style", "height:" + h + "px"); } }
复制
犯困犯困