jekyll - 在 Jekyll 中每 3 个帖子后更改网格列
问题描述
我想以 3x2x3 网格布局显示我的博客帖子,其中第一行有 3 个帖子,第二行有 2 个帖子,第三行有 3 个帖子。我的方法只是重复for loop
使用limit
和offset
过滤它。试图找出一种更优雅的方法来做到这一点,而无需使用这么多for loop
.
代码
<div class='container'>
<div class='row'>
{% for post in site.posts limit: 3 %}
<div class='col-sm-6 col-md-4'>
<p>{{ post.title }}</p>
</div>
{% endfor %}
{% for post in site.posts limit: 2 offset: 3 %}
<div class='col-sm-6'>
<p>{{ post.title }}</p>
</div>
{% endfor %}
{% for post in site.posts limit: 3 offset: 5 %}
<div class='col-sm-6 col-md-4'>
<p>{{ post.title }}</p>
</div>
{% endfor %}
</div>
</div>
解决方案
您可以使用forloop.index来执行此操作:
<div class='container'>
<div class='row'>
{% for post in site.posts limit: 8 %}
<div class='col-sm-6{% unless forloop.index == 4 or forloop.index == 5 %} col-md-4{% endunless %}'>
<p>{{ post.title }}</p>
</div>
{% endfor %}
</div>
</div>
...但循环更加优雅:
<div class='container'>
<div class='row'>
{% for post in site.posts limit: 8 %}
<div class='col-sm-6{% cycle "","",""," col-md-4"," col-md-4" %}'>
<p>{{ post.title }}</p>
</div>
{% endfor %}
</div>
</div>
...但是,如果您想炫耀/表明您是真正的程序员,则应使用数学函数取模并从零开始计数forloop.index0
:
<div class='container'>
<div class='row'>
{% for post in site.posts limit: 8 %}
{% assign mod = forloop.index0 | modulo: 5 %}
<div class='col-sm-6{% if mod == 3 or mod == 4 %} col-md-4{% endif %}'>
<p>{{ post.title }}</p>
</div>
{% endfor %}
</div>
</div>
推荐阅读
- python-3.x - 除了使用命令提示符时,atom 不会打开
- artificial-intelligence - 广度优先搜索
- c++ - 虚拟继承:没有匹配的调用函数
- typescript - 如何在不安装 NPM 包的情况下在 TypeScript 2 中进行声明合并?
- python - python:数据在采样到一个小数据集后添加了一个额外的列
- javascript - 基于找到的内容的高级查找和替换 - Javascript
- jsf - JSF 关于什么是 UIComponent
- sql - 基本的 sql 语法 如何引用我的数据库?
- javascript - 创建索引时检测到 Mongo 循环依赖
- indexing - 不同宽度的索引寄存器