基本无限滚动/延迟加载博客文章与纯JavaScript
Basic infinite scrolling/lazy loading blog posts with pure JavaScript
我正在寻找一个轻量级的解决方案(希望没有jQuery,但我愿意接受建议)来"延迟加载"一个很长的HTML页面,该页面在客户端索引了大量的博客文章。现有的大多数解决方案都采用AJAX从服务器端加载数据或处理分页。我需要找到一些东西,将工作与一个长页面,完全加载在客户端这是无限滚动。
所以HTML是这样的:
<div id="blog-post">
<h2 class="post-title">Cupcake ipsum.</h2>
<img class="post-image" src="img/posts/cupcakeIpsum.jpg">
<p class="preview">Cupcake ipsum dolor sit. Amet bear claw marzipan tootsie roll.</p>
<hr>
</div>
这个相同的摘录基本上是一遍又一遍地重复同样的方式。我基本上想在开始时显示3篇博客文章,一旦滚动到达视口底部,我想展示另一组3篇文章。
关于我如何用纯JavaScript实现这一点的任何想法?(ES6可能。)
你可能需要添加一些attr
到你的#blog-post
div。像visible
类或其他东西(顺便说一句,添加id到重复的div不是一个好主意。您的脚本将失败,通常只适用于第一个项目。您需要使用class
而不是id
)。
window.onscroll = function(ev) {
if ((window.innerHeight + window.scrollY) >= document.body.scrollHeight) {
// you're at the bottom of the page
// console.log("Bottom of page");
var posts = document.querySelectorAll('.blog-post:not(.visible)');
for(i = 0; i < posts.length; i++){
if(posts[i] != undefined && i < 3){
posts[i].className += "visible";
}
}
}
};
.blog-post{
/*display:none;*/
opacity:0;
transition: opacity 5s;
}
.visible{
/*display:block !important;*/
opacity:1;
}
<div class="blog-post visible">
<h2 class="post-title">Cupcake ipsum.</h2>
<img class="post-image" src="http://placehold.it/350x150">
<p class="preview">Cupcake ipsum dolor sit. Amet bear claw marzipan tootsie roll.</p>
<hr>
</div>
<div class="blog-post">
<h2 class="post-title">Cupcake ipsum.</h2>
<img class="post-image" src="img/posts/cupcakeIpsum.jpg">
<p class="preview">Cupcake ipsum dolor sit. Amet bear claw marzipan tootsie roll.</p>
<hr>
</div>
<div class="blog-post">
<h2 class="post-title">Cupcake ipsum.</h2>
<img class="post-image" src="img/posts/cupcakeIpsum.jpg">
<p class="preview">Cupcake ipsum dolor sit. Amet bear claw marzipan tootsie roll.</p>
<hr>
</div>
滚动方法取自&测试:https://stackoverflow.com/a/31264162/2259466
注意:在我的代码中,转换没有像预期的那样工作。你也需要使用display none,但你不能使用动画(实际上你可以,但需要解决方案)。或者你可以在js中使用动画,难度更大。
所以在一般代码中需要看起来像它。我知道它还没有完成,但我希望它能给你一个概念。相关文章:
- 我怎么能只用Javascript(AJAX)编写其中一篇文章呢
- 如何将 javascript 添加到 SharePoint 2013 文章页面
- 如何在忽略文章(a,an,the)的情况下对javascript数组进行排序
- 用于调整博客文章中照片大小的JavaScript
- 使用Javascript和CSS生成博客文章
- 我读到了关于javascript函数/原型和(fiddle提供)的文章
- 在Wordpress文章中插入JavaScript
- JavaScript引擎开发书籍或文章
- 基本无限滚动/延迟加载博客文章与纯JavaScript
- 在前面的文章中没有提到的情况下,在Javascript中对正则表达式求反
- 如何将JavaScript数组作为文章的一部分传递给ASP.NETMVC操作
- 博客文章的文本*拦截器* ?(javascript ?php ?)
- 另一篇关于在Javascript方法中调用变量的文章
- Wordpress javascript在文章中的相对路径
- 将文章存储在javascript变量中
- Javascript没有'我不做ajax文章
- Joomla文章中的表单验证javascript不起作用
- 用于文章的PHP或JavaScript表示库
- 提取一篇文章的主要内容(JavaScript)