静态即刻备份
参考方案:安知鱼的即刻方案
因为静态的即刻加载太慢了,所以决定删去这一部分。
添加 CSS 变量
1 | /* 颜色 */ |
创建数据文件
创建 source/_data/essay.yml:
1 | - class_name: 即刻短文 |
创建 MD 页面文件
创建 source/essay/index.md 来生成页面:
1 | --- |
创建 Pug 模板文件
创建 themes/butterfly/layout/includes/page/essay.pug,页面内容,注意该页面中可能存在部分 fontawesome 图标需要自行替换:
1 | #essay_page |
修改 Page 文件
修改 themes/butterfly/layout/page.pug 来使页面内容匹配,在 case page.type 子项里面添加,注意缩进:
1 | extends includes/layout.pug |
添加 CSS 样式
创建 source/css/essay_page/essay_page.css,然后在 _config.butterfly.yml 中的 inject 下的 head 引入,注意缩进:
1 | #page:has(#essay_page) { |
在 _config.butterfly.yml 中引入:
1 | inject: |
JS 处理
新建一个 js 文件用来处理即刻短文的逻辑,或者写在公共 js 中也可以。博主写在公共 js 中,即 custom.js,该 js 在 _config.butterfly.yml 中的 inject 使用如下方式引入,加入了 data-pjax,并且开启了站点的 pjax,然后再引入 waterfall.js 用于处理瀑布流。
1 | inject: |
1 | # Pjax |
新建 source/js/waterfall/waterfall.js 内容如下:
1 | function waterfall(a) { |
custom.js 内容如下:
1 | var percentFlag = false; // 节流阀 |
其中 anzhiyu 变量中存储的四个方法:
diffDate为处理时间的方法,其实 btf 中也有,只是不太喜欢那个的显示方式,就改成现在这个了。changeTimeInEssay初始化即刻时间reflashEssayWaterFall处理瀑布流显示commentText处理点击跳转评论并添加评论
方法 essayScroll 为检查滚动条卷去一个视口高度的 100 范围内执行一次,滑动到底部或评论区取消监听执行。此处博主未做 else 处理取消监听,如果有写 percent 函数监听滑动可以一起写在同一个方法里面。(博主就是写在同一个方法里面),如果即刻文章很少的话其实是可以不监听滑动的,即只显示近 30 条,因为进入页面后会执行一次瀑布流,页面不会乱,但是如果您把 essay.pug 中 17 行左右修改后可以达到无限的效果就会出现 dom 结构还没渲染瀑布流就已经执行完了的情况就需要监听滚动来再次执行瀑布流以完成布局。
首页滚动显示即刻(可选)
创建 themes/butterfly/layout/includes/bbTimeList.pug,部分 fontawesome 图标可能需要您自行修改:
1 | #bbTimeList.bbTimeList.container |
引入到主页
修改 themes/butterfly/layout/index.pug,注意缩进:
1 | extends includes/layout.pug |
如果需要像本站一样在整个顶部引入的话可以参考下面的代码,修改 themes/butterfly/layout/includes/layout.pug:
1 | - var htmlClassHideAside = theme.aside.enable && theme.aside.hide ? 'hide-aside' : '' |
引入 Swiper 依赖
在 _config.butterfly.yml 引入依赖,如果有使用轮播图插件的话此处无需引入:
1 | inject: |
添加自定义 CSS
创建 source/css/essay_page/home_essay_bar.css,然后在 _config.butterfly.yml 中的 inject 下的 head 引入,注意缩进:
1 | inject: |
1 | #bbTimeList { |
修改自定义 JS
修改 custom.js:
1 | var percentFlag = false; // 节流阀 |
主要是新增了在 anzhiyu 变量中的 initIndexEssay 方法,该方法用于初始化 swiper 轮播。







