Behalten Sie reaktionsfähige Flex-Eigenschaften bei, wenn Sie Arrays mithilfe von Handles iterieren
P粉098417223
2023-09-02 23:45:35
<p>Ich habe den folgenden Code (unter Verwendung von Handlers, Arbeitscode von 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>
{{/jede}}
</div></pre>
<pre class="brush:php;toolbar:false;">{
"3columnLayout": false,
"Karten": [
{
"Titel": "Karte 1"
},
{
"Titel": "Karte 2"
},
{
"Titel": "Karte 3"
}
]
}</pre>
<p>Im Grunde durchläuft es das Karten-Array und erstellt für jedes Element einen <code>card-container</code> Verwenden Sie dann Bootstrap, um jedem Div eine CSS-Klasse zuzuweisen, zum Beispiel <code>col-md-6</code>
<ul>
<li>Mobil: Elemente werden in einer einzelnen Spalte angezeigt</li>
<li>Tabletten: Elemente erscheinen in 2 Spalten</li>
<li>Desktop: Elemente werden in 3 Spalten angezeigt</li>
</ul>
<p>Das alles funktioniert wie erwartet und ergibt optisch die gewünschte Benutzeroberfläche (unabhängig von der Anzahl der Karten): Beispiel unten: </p>
<p>Wie im JSON gezeigt, benötige ich jedoch eine Eigenschaft außerhalb der einzelnen Kartenebene, um zu bestimmen, ob der Desktop von einem 4-Spalten-Layout zu einem 3-Spalten-Layout wechseln soll. </p>
<p>Ich wollte diese Eigenschaft nicht für jede Karte im Karten-Array wiederholen, also habe ich meinen Code wie in meinem Code-Snippet gezeigt neu organisiert (mithilfe von Handlers): https://jsfiddle.net/stcfa5wh/20/< ; /p>
<p>Das bedeutet jetzt jedoch, dass, obwohl ich auf den Wert <code>3columnLayout</code> zugreifen kann, der HTML-Code auf der Seite abgelegt wird und ich <code>col</code> nicht mehr verwenden kann So wie ich es mache. Vorher erledigt. </p>
<p>Zum Beispiel könnte ich auf einem Tablet jede <code>image-card</code> auf 50 % Breite einstellen, aber es ignoriert die Notwendigkeit von Zeilen. </p>
<p>Kann jemand eine Möglichkeit vorschlagen, die Struktur des HTML beizubehalten und gleichzeitig Attribute der obersten Ebene zu implementieren (z. B. <code>3columnLayout</code>)? </p>
我不明白为什么当您尝试实现
3columnLayout
标志时停止使用 Bootstrap。使用 Bootstrap,我们将在每列上使用类col-lg-4
来创建 3 列布局。因此,我们每列所需的条件表达式为:{{#if ../3columnLayout}}col-lg-4{{else}}col-lg-3{{/if}}
.