如何实现前端大量的DOM数据加载而页面不卡顿

简介: 为避免大量DOM导致页面卡顿,可采用分批渲染或虚拟滚动技术,仅渲染可视区域内容。
  1. 肯定不能一次性把几万个 DOM 全部插入,这样肯定会造成卡顿,所以解决问题的重点应该是如何分批次部分渲染 DOM。部分人应该可以想到通过 requestAnimationFrame 的方式去循环的插入 DOM,其实还有种方式去解决这个问题:虚拟滚动(virtualized scroller)。
  2. 这种技术的原理就是只渲染可视区域内的内容,非可见区域的那就完全不渲染了,当用户在滚动的时候就实时去替换渲染的内容。
  3. 使用 scrollHeight、scrollTop 和 clientHeight 这是最直接的方法之一。你可以通过比较元素的 scrollHeight(元素内容的高度,包括溢出部分的),scrollTop(元素滚动的顶部距离)和 clientHeight(元素内部的高度,不包括边框)来判断是否滚动到底部。
    eg:
    function isScrolledToBottom(element) {
    return element.scrollHeight - element.scrollTop === element.clientHeight;
    }

// 示例:判断窗口是否滚动到底部
window.onscroll = function() {
if (isScrolledToBottom(document.documentElement) || isScrolledToBottom(document.body)) {
console.log("已滚动到底部");
// 执行你的逻辑,例如加载更多内容
}
};

相关文章
|
4月前
|
存储 缓存 前端开发
HTTP 缓存详解
HTTP缓存是提升网页性能的核心机制,通过“强制缓存”和“协商缓存”减少请求、节省带宽。强制缓存由浏览器判断是否过期(如Cache-Control),未过期则直接使用本地资源;过期后进入协商缓存,服务器通过Etag或Last-Modified判定资源是否变更,可复用则返回304。合理配置缓存策略,能显著提升加载速度与用户体验。
390 3
|
4月前
|
Web App开发 安全
Chrome浏览器自动拦截某些下载内容 解决方案
Chrome下载文件常因安全机制被拦截。可通过设置允许不安全内容解决:在地址栏输入`chrome://settings/content/insecureContent`,添加`[*.]com`等域名,即可免手动确认下载。建议按需添加,兼顾安全与便利。(239字)
2152 3
Chrome浏览器自动拦截某些下载内容 解决方案
|
4月前
|
JavaScript 前端开发
|
4月前
|
前端开发 JavaScript
|
4月前
|
安全 算法 网络协议
从明文到加密:HTTP与HTTPS核心知识全解析
本文深入解析HTTP与HTTPS的核心差异,揭示HTTPS如何通过SSL/TLS协议、CA证书和混合加密机制,解决HTTP的窃听、篡改与冒充三大安全问题,全面科普网络安全关键技术。
1943 6
|
4月前
|
搜索推荐 算法 UED
为什么一个HTML页面为什么最好只能有一个h1标签
HTML网页中标题标签的使用规范
202 10
|
存储 缓存 JavaScript
npm link 与 pnpm link 的用法以及不同之处
npm link 与 pnpm link 的用法以及不同之处
1914 0
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
910 6

热门文章

最新文章