如何在 Jekyll 液体标签中定义 class 选择器?

How to define class selector in a Jekyll liquid tag?

我的 Jekyll 网站中有一些 html 代码,其中有一些 Jekyll 生成的内容,带有流动标签。当我设置内容样式时,CSS 不会应用于所述内容。

具体来说,我有这个 html 代码:


<p class="post-excerpt">
    {{post.excerpt | truncatewords : 40 }}
</p>

我尝试使用相关的 class 选择器在 CSS 中设置样式:

.post-excerpt{
   font-size: 1.2vw;
   // and so on and so forth
}

但是,CSS 样式被忽略了。在检查 Jekyll 生成的 .html 后,我看到它是这样生成的:

<p class="post-excerpt">
    <p> This is the content of the post's excerpt blah blah </p>
</p>

并且里面的段落元素没有设置样式。如果我随后在生成的 .html 中手动将样式添加到内部

元素,那么它就可以工作了。

如何解决这个问题,以便将样式正确应用于实际内容,而不仅仅是包装段落?

谢谢:)

我会尝试降价

{: .post-excerpt }
{{post.excerpt | truncatewords: 40 }}

因此您将创建一个 <p> 与 class post-excerpt

更新:

和HTML

{% capture my_post_excerpt %}{{post.excerpt | truncatewords: 40 }}{% endcapture %}

{: .post-excerpt }
{{ my_post_excerpt }}

或者用这个

{% capture my_post_excerpt %}{{post.excerpt | truncatewords: 40 }}{% endcapture %}

<p class="post-excerpt">
    {{ my_post_excerpt }}
</p>

一个肮脏的解决方法也可以是更改 css,将内部和外部 p 添加到 css。

p.post-excerpt p {
   font-size: 1.2vw;
   // and so on and so forth
}

在@kargware 的帮助下,我找到了一种让它工作的半hacky 方法。您可以捕获内容,然后将 <p> 替换为 <p class='class-selector-name'>,如下所示:

<p>
{% capture my_post_excerpt %}{{post.excerpt | truncatewords: 40 }}{% endcapture %}
{% assign my_post_excerpt = my_post_excerpt | replace: "<p>", "<p class='post-excerpt'>" %}
{{ my_post_excerpt }}
</p>

这会在生成的文件中产生以下 HTML:

<p>
<p class='post-card-excerpt'>This is the content of the post's excerpt blah blah</p>
</p>

并且 CSS 样式得到正常应用:)

如果有更正确的方法,我很想知道!