使用 Handlebars 迭代數組時保持響應式 Flex 屬性
P粉098417223
2023-09-02 23:45:35
<p>我有以下程式碼(使用 Handlebars,JSFiddle 中的工作程式碼):</p>
<pre class="brush:php;toolbar:false;"><div class="cards-container">
{{#each this.cards}}
<div
class="card-container container-col-inner col-12 col-md-6 col-lg-3"
>
<div class="image-card">
<div class="image-content">
<p class="title">{{title}}</p>
</div>
</div>
</div>
{{/each}}
</div></pre>
<pre class="brush:php;toolbar:false;">{
"3columnLayout": false,
"cards": [
{
"title": "Card 1"
},
{
"title": "Card 2"
},
{
"title": "Card 3"
}
]
}</pre>
<p>基本上,它會遍歷卡片數組並為每個項目創建一個<code>card-container</code> div。然後使用 bootstrap 為每個 div 分配一個 CSS 類,例如 <code>col-md-6</code>,以便:</p>
<ul>
<li>行動裝置:項目顯示在單一欄位中</li>
<li>平板電腦:項目顯示在 2 欄</li>
<li>桌面:項目顯示在 3 欄</li>
</ul>
<p>這一切都按預期工作,並在視覺上給出了所需的 UI(無論卡片數量如何):下面的示例:</p>
<p>但是,如 JSON 中所示,我需要位於單一卡片層級之外的屬性,以確定桌面是否應從 4 列佈局中斷為 3 列佈局。 </p>
<p>我不想為卡片數組中的每張卡片重複此屬性,因此重組了我的程式碼,如我的程式碼片段所示(使用Handlebars):https://jsfiddle.net/stcfa5wh/20/< ;/p >
<p>但是,這現在意味著雖然我可以訪問<code>3columnLayout</code> 值:HTML 會轉儲到頁面上,並且我不能再以我的方式使用<code>col</code> ;以前做過。 </p>
<p>例如,在平板電腦上,我可以將每個<code>image-card</code> 設定為 50% 的寬度,但它忽略了行的需要。 </p>
<p>任何人都可以建議一種既保留 HTML 結構又能夠實現頂級屬性(例如 <code>3columnLayout</code>)的方法嗎? </p>
我不明白為什麼當您嘗試實作
3columnLayout
標誌時停止使用 Bootstrap。使用 Bootstrap,我們將在每列上使用類別col-lg-4
來建立 3 列佈局。因此,我們每列所需的條件式為:{{#if ../3columnLayout}}col-lg-4{{else}}col-lg-3{{/if}}
.