feat(recipe): Zwei-Spalten-Layout ab Tablet-Querformat
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:
hsiegeln
2026-04-18 11:00:48 +02:00
parent 3e41505b81
commit a8fdb8c3f9
2 changed files with 45 additions and 7 deletions

View File

@@ -117,8 +117,12 @@
</button>
</div>
{#if tab === 'ing'}
<section class="ingredients" role="tabpanel">
<div class="panes">
<section
class="ingredients"
role="tabpanel"
class:hidden-mobile={tab !== 'ing'}
>
<div class="servings">
<button class="srv-btn" aria-label="Weniger" onclick={decr}></button>
<div class="srv-value">
@@ -146,15 +150,18 @@
{/each}
</ul>
</section>
{:else}
<section class="steps" role="tabpanel">
<section
class="steps"
role="tabpanel"
class:hidden-mobile={tab !== 'prep'}
>
<ol>
{#each recipe.steps as step (step.position)}
<li>{step.text}</li>
{/each}
</ol>
</section>
{/if}
</div>
</article>
<style>
@@ -326,4 +333,35 @@
font-weight: 700;
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>

View File

@@ -392,7 +392,7 @@
border-bottom: 1px solid #e4eae7;
}
.bar-inner {
max-width: 760px;
max-width: 1040px;
margin: 0 auto;
display: flex;
align-items: center;
@@ -618,7 +618,7 @@
}
main {
padding: 0 1rem 4rem;
max-width: 760px;
max-width: 1040px;
margin: 0 auto;
}
@media (max-width: 520px) {