feat(recipe): Zwei-Spalten-Layout ab Tablet-Querformat
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m16s
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m16s
Auf Viewports >=820px (Tablets im Querformat, Desktop) werden Zutaten und Zubereitung nebeneinander angezeigt statt per Tab gewechselt. Der Nutzer sieht beides gleichzeitig und nutzt die volle Display-Breite. - Tabs bleiben für <820px (Smartphones + Tablet-Hochkant), dort schalten sie weiterhin zwischen den Panels um. - Ab 820px: Tabs versteckt, Grid minmax(260px,1fr) 1.6fr. Zutaten links sticky top:1rem mit max-height 100vh-2rem, damit die Liste beim Scrollen der Zubereitung sichtbar bleibt. - Main-Container max-width 760px → 1040px erhöht, damit auf großen Screens überhaupt Platz für zwei Spalten bleibt. Andere Listen- Ansichten (Cards, Index) nutzen den Zugewinn automatisch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -117,8 +117,12 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if tab === 'ing'}
|
<div class="panes">
|
||||||
<section class="ingredients" role="tabpanel">
|
<section
|
||||||
|
class="ingredients"
|
||||||
|
role="tabpanel"
|
||||||
|
class:hidden-mobile={tab !== 'ing'}
|
||||||
|
>
|
||||||
<div class="servings">
|
<div class="servings">
|
||||||
<button class="srv-btn" aria-label="Weniger" onclick={decr}>−</button>
|
<button class="srv-btn" aria-label="Weniger" onclick={decr}>−</button>
|
||||||
<div class="srv-value">
|
<div class="srv-value">
|
||||||
@@ -146,15 +150,18 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
{:else}
|
<section
|
||||||
<section class="steps" role="tabpanel">
|
class="steps"
|
||||||
|
role="tabpanel"
|
||||||
|
class:hidden-mobile={tab !== 'prep'}
|
||||||
|
>
|
||||||
<ol>
|
<ol>
|
||||||
{#each recipe.steps as step (step.position)}
|
{#each recipe.steps as step (step.position)}
|
||||||
<li>{step.text}</li>
|
<li>{step.text}</li>
|
||||||
{/each}
|
{/each}
|
||||||
</ol>
|
</ol>
|
||||||
</section>
|
</section>
|
||||||
{/if}
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -326,4 +333,35 @@
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-size: 0.95rem;
|
font-size: 0.95rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.panes {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.hidden-mobile {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Querformat-Tablets und Desktop: Zutaten + Zubereitung nebeneinander,
|
||||||
|
Tabs ausgeblendet. Zutaten sticky, damit sie beim Scrollen der
|
||||||
|
Zubereitung oben bleiben. */
|
||||||
|
@media (min-width: 820px) {
|
||||||
|
.tabs {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.panes {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: minmax(260px, 1fr) 1.6fr;
|
||||||
|
gap: 2rem;
|
||||||
|
align-items: start;
|
||||||
|
}
|
||||||
|
.hidden-mobile {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.ingredients {
|
||||||
|
position: sticky;
|
||||||
|
top: 1rem;
|
||||||
|
max-height: calc(100vh - 2rem);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -392,7 +392,7 @@
|
|||||||
border-bottom: 1px solid #e4eae7;
|
border-bottom: 1px solid #e4eae7;
|
||||||
}
|
}
|
||||||
.bar-inner {
|
.bar-inner {
|
||||||
max-width: 760px;
|
max-width: 1040px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -618,7 +618,7 @@
|
|||||||
}
|
}
|
||||||
main {
|
main {
|
||||||
padding: 0 1rem 4rem;
|
padding: 0 1rem 4rem;
|
||||||
max-width: 760px;
|
max-width: 1040px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
@media (max-width: 520px) {
|
@media (max-width: 520px) {
|
||||||
|
|||||||
Reference in New Issue
Block a user