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

Nunjucks模板折叠功能问题:展开后文本换行而非接续显示

解决Nunjucks折叠文本点击"more"后换行显示的问题

嘿,我来帮你搞定这个需求!要让剩余内容在点击"more"后从新行开始显示,核心是处理行内元素和块级元素的布局差异——原来的代码里用<span>包裹剩余文本,它是行内元素,所以会跟前面的内容挤在同一行。这里给你两个实用的解决方案:

方案1:改用块级容器(推荐,语义化更友好)

把包裹剩余文本的<span>换成<div>,块级元素会自动占据整行,自然和前面的文本换行分隔:

<p class="meta-info-decription">
  <span>
    {% if(wikipedia.wiki_extract.length > 100 ) %}
      {{ wikipedia.wiki_extract.slice(0,100) }}
      <span class="read-more more clickable" data-toggle="collapse" data-target="#wiki-text">...more </span>
      <!-- 替换为div,实现自动换行 -->
      <div id="wiki-text" class="collapse">
        {{ wikipedia.wiki_extract.slice(100)}}
        <span class="read-more less" data-toggle="collapse" data-target="#wiki-text">less ... </span>
      </div>
    {% else %}
      {{ wikipedia.wiki_extract }}
    {% endif %}
  </span>
  <a href="{{ wikipedia.wiki_url }}" target="_blank"> Wikipedia </a>
</p>

方案2:手动添加强制换行标签

如果不想改变容器类型,直接在剩余文本前加<br>标签也能实现换行效果:

<p class="meta-info-decription">
  <span>
    {% if(wikipedia.wiki_extract.length > 100 ) %}
      {{ wikipedia.wiki_extract.slice(0,100) }}
      <span class="read-more more clickable" data-toggle="collapse" data-target="#wiki-text">...more </span>
      <span id="wiki-text" class="collapse">
        <!-- 加<br>强制换行 -->
        <br>{{ wikipedia.wiki_extract.slice(100)}}
        <span class="read-more less" data-toggle="collapse" data-target="#wiki-text">less ... </span>
      </span>
    {% else %}
      {{ wikipedia.wiki_extract }}
    {% endif %}
  </span>
  <a href="{{ wikipedia.wiki_url }}" target="_blank"> Wikipedia </a>
</p>

小提示:

  • 方案1更推荐,因为块级元素的布局逻辑更清晰,后续调整样式(比如缩进、间距)也更方便。
  • 顺便帮你修正了原代码里的一个小问题:<p>标签里的{{wikipedia.wiki_url}}是无效属性,我已经把它移除了,应该是不小心写错位置啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:30:10