将 <li> 中的项目符号替换为各自 post 中指定的图片

replace bullet point in <li> with image specified in respective post

我有一个 html 列表元素,可以将 blogpost 呈现为列表。

<ul class="posts">
{{ range .Data.Pages -}}
  <li>
    <span class="postlist_container">
      <a href="{{ .Permalink }}">{{ .Title }}</a> 
    <time class="pull-right post-list" datetime="{{ .Date.Format "2006-01-02T15:04:05Z0700" }}">{{ .Date.Format "Mon, Jan 2, 2006" }}</time> </span>
  </li>
{{- end }}
</ul>

博客post是用 markdown(以及 Rmarkdown)编写的,我指定了应该出现在列表中的源图像。

---
thumbnail: "/post/source/image_tn.jpg"
---

通过在列表中添加标签,我设法让图像与 post 的标题一起呈现。

<img src="{{ with .Params.thumbnail }}{{ . }}{{ end }}">

这并不理想,因为有一个要点,然后是标题、日期和图像。我想要的是图像替换项目符号。

我已经阅读过有关为此使用 CSS 的信息,但是这些示例始终使用一个图像的绝对路径,例如

.posts {
  list-style-image: url("source/image.jpeg");
}

有没有办法在 markdown 文件中引用 Param.thumbnail 中的图像?

这没有用:

.posts {
  list-style-image: url("{{ with .Params.thumbnail }}{{ . }}{{ end }}");
}

如有任何帮助,我们将不胜感激。

为什么不使用其中一种伪元素,而不是使用 list-style-image?像这样!

li{
  position: relative;
  padding-left: 5px;
}

li::before{
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  background: url("{{ with .Params.thumbnail }}{{ . }}{{ end }}") no-repeat center center;
}

希望对您有所帮助。

要使您的 CSS 样式 sheet 使用降价,您需要将其包含在 HTML 模板中。

在您的模板中插入 一次 您想要即时更新的规则(最好是在 <head> 中插入,但其他任何地方都可以工作

<style>
.posts {
  list-style-image: url("{{ with .Params.thumbnail }}{{ . }}{{ end }}");
}
</style>

改为

<img src="{{ with .Params.thumbnail }}{{ . }}{{ end }}">

最好从 blogdown 阅读模板教程

https://bookdown.org/yihui/blogdown/templates.html#a-minimal-example

The partials/ directory is the place to put the HTML fragments to be reused by other templates via the partial function. We have four partial templates under this directory:

header.html main defines the <head> tag and the navigation menu in the <nav> tag.

如果您进一步阅读,您会发现 {{ partial "head_custom.html" . }} 是您可能插入的文件 (head_custom.html)

<style>
.posts {
  list-style-image: url("{{ with .Params.thumbnail }}{{ . }}{{ end }}");
}
</style>