js怎样写一个滚动加载功能?
Admin 2021-05-24 群英技术资讯 1187 次浏览
我们在做网站页面的时候,如果页面的内容太多,我们可以做分页或者做滚动加载更多,这篇文章就给大家分享关于使用JavaScript实现滚动加载更多的代码,小编觉得是比较实用的,因此分享给大家做参考。
vscode
index:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * {margin:0; padding: 0;} li {list-style: none;} body {background: #eee;} .wrapper {background: #fff;width: 970px; margin:20px auto; padding: 15px;} h1 {text-align: center; border-bottom: 1px solid #ddd; padding-bottom: 20px;} li {margin:20px 0; border-bottom: 1px dotted #eee; padding-bottom: 20px;} p { line-height: 25px;} </style> <script src="/jquery-1.11.3.js"></script> </head> <body> <div class="wrapper"> <h1>新闻列表(加载更多)<script>document.write(new Date().toLocaleString())</script></h1> <ul> </ul> <div class="footer" style="text-align: center"> <img style="width: 40px" src="" alt=""> </div> </div> <script> let page = 1; // 默认是第1页 let load = true; function getNewsList(page) { $(".footer img").attr("src","/timg.gif") load = false; $.get("/news",{page},res=>{ // console.log(res) if(res.news.length){ let str =""; // 客户端渲染,客户端自己通过ajax获取数据,自已渲染数据 res.news.forEach(item=>{ str += ` <li> <h2><a href="#" rel="external nofollow" >${item.title}</a></h2> <p class="time">${item.time}</p> <p class="summary">${item.summary}</p> </li> ` }) $("ul").append(str) load = true; }else{ $(".footer").html("--------------- 我是有底线的 --------------- ") load = false; } }) } getNewsList(page); // 一上来就获取第1页的数据 // 判断出什么时候到底部 $(document).scroll(function () { let st = $(window).scrollTop(); // 卷上去的高度 let ch = $(window).height(); // 一屏的高度 let dh = $(document).height(); // 整个文档(整个内容)的高度 if((st+ch) >= dh && load){ // 滚动到了底部 getNewsList(++page) } }) </script> </body> </html>
JS:
let express = require("express"); let path = require("path"); var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; let app = express(); // 托管静态资源 app.use(express.static(path.resolve(__dirname, "./public"))) // 当访问/ 响应一个html页面,不是渲染模板 app.get("/",(req,res)=>{ res.sendFile(path.resolve(__dirname,"./views/index.html")) }) // 当访问/news 响应一个json数据 // 如果一个路由,返回了一个Json数据,我们叫http://localhost:3000/news是api接口 // api:1)别人封装的方法,我们直接去调用 2)指一个url地址 叫api接口 app.get("/news",(req,res)=>{ let page = req.query.page || 1; // page表示当前是第几页 // page如果小于等于0 (page <= 0) && (page = 1) // console.log(page) let pageSize = 5; // 每页显示多少条 let offset = (page-1)*pageSize; MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) { if (err) throw err; var dbo = db.db("news"); dbo.collection("newslist").find({}).skip(offset).limit(pageSize).toArray(function(err, result) { if (err) throw err; // console.log(result); // 获取每一页的数据 dbo.collection("newslist").count().then(result2=>{ // result2表示一共有多少条数据 let total = result2; let size = Math.ceil(total / pageSize) // 服务端渲染: 核心是使用模板引擎 jsp php asp out // 是把模板和数据柔和在一起,形成一个有真实数据的页面,响应给客户端 res.json({ news:result, total, // 总共多少条数据 pageSize, // 每页显示多少条 page, // 当前是第几页 size, // 一菜有多少页 }) }); db.close(); }); }); }) app.listen(3000,()=>{ console.log("3000 ok~") })
以上就是关于js实现滚动加载的代码,滚动加载效果的应用也是比较多的,上述代码也有一定的借鉴价值,感兴趣的朋友可以参考学习。关于js滚动加载的介绍就到这,希望对大家有帮助。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在JavaScript 中,我们往往会遇到需要使用某些默认值来填充数组的情况,那么都有哪些方式可以完成这样的任务呢?这篇文章主要给大家介绍了关于JS创建或填充任意长度数组的小技巧,需要的朋友可以参考下
本文主要介绍了JavaScript如何用面向对象的方式封装拖拽对象,通过3种方式来实现,帮助读者更好的理解其原理
这篇文章主要介绍了如何理解JavaScript中的数据类型,帮助大家更好的学习JavaScript,感兴趣的朋友可以了解下
TypeScript中泛型是什么意思?怎样使用?对新手来说,可能对泛型和泛型的用法不是很了解,对此这篇文章给大家分享TypeScript中泛型的内容。小编觉得挺实用的,因此给大家做个参考,感兴趣的朋友接着往下看。
滑块组件就是一个允许用户在有限区间内通过移动滑块来选择值的组件。滑块组件的应用是比较常见的,例如商品价格区间筛选,音量设置,滑块验证等等。这篇文章就给大家介绍一下用原生JS实现滑块组件,下面是实现效果,功能分析以及代码。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008