You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Quarto HTML文档的目录(TOC)顶部添加图片?

Quarto HTML文档侧边栏目录顶部添加图片的解决方案

问题根源

Quarto HTML的侧边栏DOM结构和Rmarkdown完全不同:原代码依赖的#TOC元素在Quarto里被包裹在#quarto-sidebar容器内,且默认不加载jQuery,导致原脚本无法定位到目标元素。

可行解决方案

方案1:原生JavaScript实现(推荐,无需额外依赖)

直接适配Quarto的侧边栏结构编写脚本,同时调整样式:

<script>
document.addEventListener('DOMContentLoaded', function() {
  const sidebar = document.querySelector('#quarto-sidebar');
  if (sidebar) {
    const navLogo = document.createElement('div');
    navLogo.id = 'nav_logo';
    const img = document.createElement('img');
    img.src = 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Posit_logo.svg/640px-Posit_logo.svg.png';
    navLogo.appendChild(img);
    sidebar.insertBefore(navLogo, sidebar.firstChild);
  }
});
</script>

<style>
#quarto-sidebar .toc {
  margin-top: 120px; /* 为顶部图片预留空间 */
}
#nav_logo {
  position: fixed;
  width: 240px;
  margin-top: 10px;
  padding-left: 15px; /* 与侧边栏内容对齐 */
}
#nav_logo img {
  width: 100%; /* 确保图片自适应容器宽度 */
}
</style>

方案2:兼容jQuery版本(若文档已加载jQuery)

如果你的Quarto文档手动引入了jQuery,可修改选择器适配结构:

<script>
$(document).ready(function() {
  $('#quarto-sidebar').prepend('<div id="nav_logo"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Posit_logo.svg/640px-Posit_logo.svg.png"></div>');
});
</script>

<style>
#quarto-sidebar .toc {
  margin-top: 120px;
}
#nav_logo {
  position: fixed;
  width: 240px;
  margin-top: 10px;
  padding-left: 15px;
}
#nav_logo img {
  width: 100%;
}
</style>

核心调整说明

  • 选择器替换:将原代码中针对#TOC父容器的定位,改为Quarto专用的侧边栏容器#quarto-sidebar
  • 样式目标修正:原#TOC的间距样式改为#quarto-sidebar .toc,匹配Quarto的TOC类名
  • 图片自适应:新增img的宽度样式,避免图片超出侧边栏范围
  • 原生JS替代:摆脱对jQuery的依赖,适配Quarto默认环境

内容的提问来源于stack exchange,提问作者John Sinclair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:22:05