使用infinite-scroll实现Ghost博文列表的滚动加载

简介: Ghost博客系统默认提供的博文列表为传统的翻页方式(通过点击上一页、下一页等按钮来切换),随着移动客户端的发展,瀑布流式的滚动加载方式得到广泛应用,有效地提高了用户浏览信息的流畅度。

Ghost博客系统默认提供的博文列表为传统的翻页方式(通过点击上一页、下一页等按钮来切换),随着移动客户端的发展,瀑布流式的滚动加载方式得到广泛应用,有效地提高了用户浏览信息的流畅度。下面详述如何通过Infinite Scroll来改造Ghost博文列表的翻页效果。

Infinite Scroll

Infinite Scroll顾名思义:无限滚动,也称为自动分页、滚动分页和无限分页,是基于jquery的一个插件。可以用来实现滚动页面的时候加载下一页的内容。

infinite-scroll项目地址

实现步骤

  • jquery.infinitescroll.min.js拷贝到你的主题目录下
  • 在循环获取posts列表的页面上引入jquery.infinitescroll.min.js文件

注意:jquery.infinitescroll.min.js必须在jquery引入之后

<script src="{{asset "js/jquery.infinitescroll.min.js"}}"></script>
  • 尝试一下最简配置,若我们的页面结构如下
{{#foreach posts}}
    <article class="{{post_class}}">
        {{!有封面的时候展示封面}}
        {{#if image}}
        <a class="post-pic hidden-xs" href="{{url}}" style="background-image: url({{image}});"></a>
        {{/if}}

        <header class="post-header">
            <h2 class="post-title"><a href="{{url}}">{{{title}}}</a></h2>
        </header>
        <section class="post-excerpt">
            <p>{{excerpt characters="140"}} <a class="read-more" href="{{url}}">»</a></p>
        </section>
        <footer class="post-meta">
            {{#if author.image}}<img class="author-thumb" src="{{author.image}}" alt="{{author.name}}" nopin="nopin" />{{/if}}
            {{author}}
            {{tags prefix=" <i class=\"fa fa-tags\"></i> "}}
            <time class="post-date" datetime="{{date format='YYYY-MM-DD'}}">{{date format="YYYY年MM月DD日"}}</time>
        </footer>

    </article>
{{/foreach}}

<nav class="pagination" role="navigation">
    {{#if prev}}
        <a class="newer-posts" href="{{page_url prev}}">← 上一页</a>
    {{/if}}
    <span class="page-number">第 {{page}} 页 ⁄ 共 {{pages}} 页</span>
    {{#if next}}
        <a class="older-posts" href="{{page_url next}}">下一页 →</a>
    {{/if}}
</nav>
  • 我们可以通过如下代码将原来点击上一页、下一页的翻页模式变成滚动翻页
<script>
    $(document).ready(function (){
        $('#posts-content').infinitescroll({
            navSelector  : "nav.pagination",
            nextSelector : "nav.pagination a:last",
            itemSelector : "article"
        });
    });
</script>

使用解析

  • 通过id选择器$('#posts-content')选中post列表的循环展示区域,后续加载的内容会被append到这个节点之下
  • navSelector参数,用来选中翻页模块的html位置,如上配置即选中了nav标签class为pagination的元素,框架会将这部分内容隐藏(隐藏原来的翻页模块)
  • nextSelector参数,标出下一页的请求链接,框架根据此获取下一页的请求以发起ajax请求获取下一页的html内容
  • itemSelector参数,在发起了下一页请求之后,通过这个参数的配置来截取下一页html内容中post部分来填充到navSelector选中位置的最后

进阶配置

在完成了上面操作之后,还可以做一些进阶的配置,比如修改加载中的文字描述,没有内容之后的提示内容等等。

下面是本站使用的配置,供参考。

<script>
    $(document).ready(function (){
        $('#posts-content').infinitescroll({
            navSelector  : "nav.pagination",
            nextSelector : "nav.pagination a:last",
            itemSelector : "article",
            animate : false,
            bufferPx: 5,
            extraScrollPx: 50,
            loading: {
                speed: 'fast',
                selector: null,
                msgText: '加载中...',
                finishedMsg:'<div class="post-loading">没有更多了</div>'
            }
        });
    });
</script>

更多参数配置可参见:infinite-scroll

本博客主题项目地址

目录
相关文章
|
容器
UniApp scroll-view 事件不生效(@scroll、@scrolltolower、@scrolltoupper ...)
UniApp scroll-view 事件不生效(@scroll、@scrolltolower、@scrolltoupper ...)
1682 0
【VsCode】1.70.0 新版本好用功能分享 :代码函数名称浏览时固定(功能原称 sticky Scroll)
在Code 1.70.0 以后,新增功能:sticky Scroll 。 效果描述: 在浏览长函数的时候,可以将函数的名称定义部分固定在顶栏,类似冻结窗口,方便查看函数功能,不必再跳转。
496 0
|
小程序
微信小程序scroll-view组件设置 scroll-top无效问题解决
微信小程序scroll-view组件设置 scroll-top无效问题解决
1023 0
|
JavaScript
js:监听页面滚动scroll,实现阅读进度条
js:监听页面滚动scroll,实现阅读进度条
367 0
|
小程序 前端开发 定位技术
【小程序】view视图,swiper轮播图,scroll-view滑动列表 (在线详细手册)
【小程序】view视图,swiper轮播图,scroll-view滑动列表 (在线详细手册)
【小程序】view视图,swiper轮播图,scroll-view滑动列表 (在线详细手册)
|
存储 JavaScript 前端开发
jquery scroll 滚动加载列表 获取腾讯云图片像素信息
整体列表通过拉取腾讯云COS文件桶信息,同时图片需要展示像素信息
jquery scroll 滚动加载列表 获取腾讯云图片像素信息
|
程序员
如何在Flutter中使Expanded中的文本可滚动以及扫描条形码打开链接
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 接下来的一段时间我会与大家分享flutter开发中的 每日两个小技巧 如何在Flutter中使Expanded中的文本可滚动 我正在忙着用闪存卡构建一个应用程序,其中包含有关它们的信息,但我遇到了一个我似乎无法弄清楚的愚蠢问题。
246 0
|
vr&ar 图形学
【Unity3D 灵巧小知识点】☀️ | Unity UGUI组件Scroll View禁止 左右 或 上下 滑动
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【Unity3D 灵巧小知识点】☀️ | Unity UGUI组件Scroll View禁止 左右 或 上下 滑动
mint-ui在tab-container使用Infinite scroll 不能触发loadmore
直接上代码,基本上就是官网的Infinite scroll外面套上一层tab-container:
3288 0